AES-256加密/解密

时间:2019-02-13 01:18:16

标签: openssl cryptography aes

我确定我想念一些东西,但是我正在努力了解什么!

我在此网站上使用AES-256在线加密一个虚拟字符串:

https://www.devglan.com/online-tools/aes-encryption-decryption

具有以下参数:

  • 要加密的文本:这是一个测试!
  • 模式:CBC
  • 密钥大小(位):256
  • 输入IV:0000000000000000
  • 秘钥:3B1C2DDAA872F28A4CDCB3324394569B

输出(Base64格式)为:

g + rR + egh2MCHFnYe0XJM7g ==

当我尝试使用openssl从命令行解密时:

echo g+rR+egh2MCHFnYe0XJM7g== | openssl enc -aes256 -d  -out secret.dec -K 3B1C2DDAA872F28A4CDCB3324394569B -iv 0

我收到此错误:

bad decrypt
4780398188:error:06FFF06D:digital envelope routines:CRYPTO_internal:wrong final block length:Sources/libressl/libressl-22.240.1/libressl-2.6/crypto/evp/evp_enc.c:524:

1 个答案:

答案 0 :(得分:1)

将密钥和IV转换为十六进制。

echo g+rR+egh2MCHFnYe0XJM7g== | openssl enc -d -a -aes-256-cbc -nosalt -out deco.dec -p -K 3342314332444441413837324632384134434443423333323433393435363942  -iv 30303030303030303030303030303030

OpenSSL需要十六进制的密钥和IV。当您将密钥作为 3B1C2DDAA872F28A4CDCB3324394569B 提供时,将其填充以其他零以使其成为

  

“ 3B1C2DDAA872F28A4CDCB3324394569B00000000000000000000000000000000000000”。

类似地,IV转换为

  

“ 00000000000000000000000000000000000000”。

因此,即使您提供了正确的密钥,OpenSSL最终还是使用了错误的密钥和IV,并且解密失败。

注意:通过标志“ -p”和openSSL将显示所使用的Key和IV。