以下是AES加解密Kotlin实现:
object AESCrypt {
//算法 工作模式 填充模式
// val transformation = "AES/ECB/PKCS5Padding"
val transformation = "AES/CBC/PKCS5Padding"
//算法
val algorithm = "AES"
/**
* AES加密
*/
fun enCrypt(str: String, pwd: String): String {
//创建cipher对象
val cipher = Cipher.getInstance(transformation)
val secretKeySpec: SecretKeySpec? = SecretKeySpec(pwd.toByteArray(), algorithm)
// cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec)
val iv = IvParameterSpec(pwd.toByteArray())
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, iv)//CBC需要多一个参数
val enCryptRes = cipher.doFinal(str.toByteArray())
val result = Base64.encode(enCryptRes)
return result
}
/**
* 解密
*/
fun deCrypt(str: String, pwd: String): String {
//创建cipher对象
val cipher = Cipher.getInstance(transformation)
val secretKeySpec: SecretKeySpec? = SecretKeySpec(pwd.toByteArray(), algorithm)
val iv = IvParameterSpec(pwd.toByteArray())
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, iv)
val deCryptRes = cipher.doFinal(Base64.decode(str))
val result = String(deCryptRes)
return result
}
}
fun main(args: Array<String>) {
val str = "我爱编程"
val pwd = "1234567812345678"
val enCrypt = AESCrypt.enCrypt(str, pwd)
println("加密后的结果:$enCrypt")
val deCrypt = AESCrypt.deCrypt(enCrypt, pwd)
println("解密后的结果:$deCrypt")
}
加密后的结果:F/r871687ClKSFp+oVW5Xw==
解密后的结果:老婆我爱你
Base64的工具请看上一篇DES博客