- Java AES Encryption with CBC and PKCS7Padding – iTecNote
- java.security.NoSuchAlgorithmException:Cannot find any provider supporting AES/ECB/PKCS7PADDING – Stack Overflow
- java – Encrypt text to AES/CBC/PKCS7Padding – Stack Overflow
- Cipher (Java Platform SE 7 ) (oracle.com)
- AES decryption AES encryption AES Hex Key Supported – The X Online Tools (the-x.cn)
import java.io.UnsupportedEncodingException; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.Security; import java.util.Base64; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Hex val ENCRYPT_KEY = "aaaaaaaaaaaaaaaa" val ENCRYPT_IV = "bbbbbbbbbbbbbbbb" def encrypt(value : String) : String = { val plainText: String = value try { val key: Array[Byte] = ENCRYPT_KEY.getBytes("UTF-8") val ivs: Array[Byte] = ENCRYPT_IV.getBytes("UTF-8") val cipher:Cipher = Cipher.getInstance("AES/CBC/PKCS5Padding") // PKCS7Padding val secretKeySpec: SecretKeySpec = new SecretKeySpec(key, "AES") val paramSpec = new IvParameterSpec(ivs) cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, paramSpec) val escapedString: String = Base64.getEncoder.encodeToString(cipher.doFinal(plainText.getBytes("UTF-8"))).trim() val decoded: Array[Byte] = Base64.getDecoder.decode(escapedString) val hexString: String = Hex.encodeHexString(decoded) return hexString; } catch { case e: Throwable =>println("Cannot encode "+ e) return value } } val hexString = encrypt("test message");
output
hexString: String = be7dec3aba8964e18cf7a942f9a89880
validate result with The X Online Tools (the-x.cn)