简体   繁体   English

Java / Kotlin AES-128-CBC加密产生的结果与OpenSSL不同

[英]Java/Kotlin AES-128-CBC encryption produces different result than OpenSSL

I'm trying to implement aes-128-cbc encryption in Kotin/Java. 我正在尝试在Kotin / Java中实现aes-128-cbc加密。 Unfortunately encryption-results differ from OpenSSL-output using same arguments. 不幸的是,加密结果与使用相同参数的OpenSSL输出不同。

Arguments: 参数:

Data: [[[1532347727425, 6481]]]

Key: f70559cb976123807855fd9081f17760

IV: b7e5daacd367e143d20a0b536507a6d6

Kotlin-Implementation: Kotlin实施:

const val AES_TRANSFORMATION = "AES/CBC/PKCS5Padding"

val cipher = Cipher.getInstance(AES_TRANSFORMATION)
val keySpec = SecretKeySpec(aesKey.hexToByteArray(), "AES")
val ivSpec = IvParameterSpec(iv.hexToByteArray())
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec)
val result = cipher.doFinal(data.toByteArray())
return String(Base64Helper().encode(result))

OpenSSL-CMD: OpenSSL-CMD:

echo [[[1532347727425, 6481]]] | openssl aes-128-cbc -d -K f70559cb976123807855fd9081f17760 -iv b7e5daacd367e143d20a0b536507a6d6 -base64

Results: 结果:

Kotlin/Android: fHcK3EeXEzSYtIa8PbhXkANwv2sU/qgktUnabzgE9HI=
OpenSSL: 7L1XLM/5ihCNRryiSZ8RMlPSeqsHDXa785dJujS7c/M=

Decrypting results with OpenSSL produces the following error: 使用OpenSSL解密结果会产生以下错误:

bad decrypt 
140621119981208:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:529:

Update: Changed Padding to PKCS5 - same output. 更新:将填充更改为PKCS5-相同的输出。

您应该使用AES/CBC/PKCS5Padding密码

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM