Openssl AES-256加密/解密
我肯定我错过了什么,但我正在努力理解什么 I使用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
- 要加密的文本:这是一个测试强>
- 模式:CBC
- 密钥大小(位):256
- 输入IV:0000000000000000
- 密钥:3B1C2DDAA872F28A4CDCB3324394569B
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?它已经是十六进制值了,对吗?