Mac终端OpenSSL加密文件在Ubuntu终端解密失败求助
解决Mac与Ubuntu跨系统OpenSSL解密不兼容问题
问题根源
Mac自带的OpenSSL版本偏旧,加密时默认使用MD5作为密钥哈希算法;而Ubuntu使用的新版OpenSSL默认采用更安全的SHA-256,且要求使用PBKDF2迭代器。两者密钥派生方式不一致,导致解密时密钥不匹配,出现块长度错误,最终图片损坏。
临时解决:在Ubuntu上兼容旧加密文件
直接在解密命令中指定与Mac加密时一致的MD5算法,即可正常解密:
openssl enc -d -aes-256-cbc -salt -md5 -in Image.enc -out Image.jpg
永久解决:使用跨系统兼容的加密命令
为避免后续跨系统出现同样问题,重新加密时采用PBKDF2密钥派生方式(Mac和Ubuntu新版OpenSSL均支持):
- 加密命令:
openssl enc -aes-256-cbc -salt -pbkdf2 -iter 100000 -in Image.jpg -out Image.enc
- 解密命令(Mac/Ubuntu通用):
openssl enc -d -aes-256-cbc -pbkdf2 -iter 100000 -in Image.enc -out Image.jpg
其中-pbkdf2指定使用更安全的密钥派生函数,-iter 100000设置迭代次数(数值越高破解难度越大,10万是兼顾安全与速度的合理值)。
关于警告的说明
终端提示的deprecated key derivation used是因为旧加密方式安全性较低,新版OpenSSL建议使用-pbkdf2或-iter参数提升安全性,这也是永久解决办法采用该参数的原因。
内容的提问来源于stack exchange,提问作者user820913
相关产品推荐
相关产品推荐

