Skip to main content

JAVA AES-256 Encryption and Decryption



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