如何强制OpenSSL在错误密码解密时输出解密内容?
如何强制OpenSSL在错误密码解密时输出解密内容?
其实你说得没错,OpenSSL确实是通过校验PKCS#7填充来判断解密是否成功的——密码错误时,解密后的最后一块数据的填充格式肯定不符合规范,所以它就直接报错终止,不肯输出内容。要让它忽略填充错误、强制输出解密后的原始数据,你可以用这个直接的办法:
在解密命令里加上 -nopad 选项,关闭填充验证功能。修改后的命令如下:
openssl enc -aes-128-cbc -d -in encprova.aes128 -nosalt -nopad
补充说明:
- 加上
-nopad后,OpenSSL会跳过填充检查步骤,不管解密后的内容是否符合填充规则,都会把所有解密后的字节原样输出出来——哪怕内容是乱码(毕竟密码错了,解密结果本来就是无效的)。 - 如果你加密时用了默认的PKCS#7填充(没有手动指定无填充),那么用错误密码解密并加上
-nopad后,输出的内容末尾会包含一段不符合规则的填充数据,这是正常现象。
备注:内容来源于stack exchange,提问作者Allexj
相关产品推荐
相关产品推荐

