By default java support 128 bit symmetric key encryption. If you want extended policy of 256 bit key, you have to download the extended policy jar and install into jre/lib/security folder.
AES - 256 Encryption and Decryption
import java.security.MessageDigest;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.springframework.stereotype.Service;
import javax.xml.bind.DatatypeConverter;
public class AESAlgorithmService {
private String _secretPass = "MyPr!vateKEy";
private SecretKeySpec keyGeneration(String secret) throws Exception {
MessageDigest sha = MessageDigest.getInstance("SHA-256");
byte[] digest = sha.digest(secret.getBytes("UTF-8"));
SecretKeySpec secretKey = new SecretKeySpec(digest, "AES");
return secretKey;
}
public byte[] encrypt(String sSrc) throws Exception {
SecretKeySpec _secretKey = keyGeneration(_secretPass);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, _secretKey);
byte[] encrypted = cipher.doFinal(sSrc.getBytes());
return encrypted;
}
public byte[] decrypt(byte[] cipherText) throws Exception {
SecretKeySpec _secretKey = keyGeneration(_secretPass);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, _secretKey);
byte[] decrypted = cipher.doFinal(cipherText);
return decrypted;
}
private String bytesToHex(byte[] hash) {
return DatatypeConverter.printHexBinary(hash);
}
}
Comments
Post a Comment