Openssl AES-256加密/解密

Openssl AES-256加密/解密,openssl,cryptography,aes,Openssl,Cryptography,Aes,我肯定我错过了什么,但我正在努力理解什么 I使用AES-256在线加密本网站上的虚拟字符串: 使用以下参数: 要加密的文本:这是一个测试 模式:CBC 密钥大小(位):256 输入IV:0000000000000000 密钥:3B1C2DDAA872F28A4CDCB3324394569B 输出(Base64格式)为: g+rR+egh2MCHFnYe0XJM7g== 当我尝试使用openssl从命令行对其进行解密时: echo g+rR+egh2MCHFnYe0XJM7g== | ope

我肯定我错过了什么,但我正在努力理解什么

I使用AES-256在线加密本网站上的虚拟字符串:

使用以下参数:

  • 要加密的文本:这是一个测试
  • 模式: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:

将键和IV转换为十六进制

echo g+rR+egh2MCHFnYe0XJM7g== | openssl enc -d -a -aes-256-cbc -nosalt -out deco.dec -p -K 3342314332444441413837324632384134434443423333323433393435363942  -iv 30303030303030303030303030303030
OpenSSL需要十六进制的密钥和IV。当您提供键为3B1C2DDAA872F28A4CDCB3324394569B时,它会被添加零来填充

“3B1C2DDAA872F28A4CDCB3324394569B00000000000000000000000000”

同样地,IV转换为

“00000000000000000000”

因此,OpenSSL最终使用了错误的密钥和IV,即使您提供了正确的密钥和IV,解密也会失败


注意:Pass标志“-p”和openSSL将显示所使用的密钥和IV

这些在线工具通常写得很糟糕。例如,AES密钥应该由随机字节组成。您无法输入无法打印的字符,因此您输入的“键”不是完全随机的。基本上你是在自学糟糕的密码。这太棒了!谢谢你是怎么把钥匙转换成十六进制的?我知道了。。。任何ascii到十六进制都可以完成此任务:)后续问题:)。。。为什么需要将此3B1C2DDAA872F28A4CDCB3324394569B转换为HEX?它已经是十六进制值了,对吗?