使用openssl enc
命令进行解密时,如同时满足以下两个条件,会导致解密失败或得到内容与原内容不一致:
- 加密和解密时使用的OpenSSL版本不同,且一个是1.0.2及以下版本,另一个是1.1.0及以上版本
- 加密时使用密码生成密钥,而不是指定HEX格式的密钥(及IV*1)
检索OpenSSL的更新日志可知,从1.0.2h更新至1.1.0(系列)时,openssl dgst
和openssl enc
命令的默认摘要算法由MD5改为SHA256:
Changes between 1.0.2h and 1.1.0 [25 Aug 2016]
...
*) Changed default digest for the dgst and enc commands from MD5 to
sha256[Rich Salz]
...
-md
可指定摘要算法。由此一来便可以解决问题:
- 由OpenSSL 1.0.2加密的文件,用
openssl enc -{cipher} -d -md md5 -k {password}
解密 - 由OpenSSL 1.1.0加密的文件,用
openssl enc -{cipher} -d -md sha256 -k {password}
解密
*1.视所使用的加密算法而定,大多数算法需要IV/Nonce;少数不需要,如AES-ECB。