如何使用OpenSSL解密cCryptoGS(CryptoJS)生成的加密字符串?
如何用OpenSSL解密cCryptoGS生成的AES密文
cCryptoGS中的CryptoJS.AES.encrypt在使用密码而非直接密钥加密时,采用的是OpenSSL传统的EVP_BytesToKey密钥派生算法,搭配MD5哈希、1次迭代、AES-256-CBC模式。但OpenSSL 3.0+版本的enc命令默认已切换到PBKDF2作为密钥派生函数,同时标记EVP_BytesToKey为Legacy算法,直接使用原有命令会导致解密失败。
正确的OpenSSL解密命令
需要添加-legacy参数启用传统算法支持,修正后的命令如下:
echo "U2FsdGVkX19A/TPmx/tmR9MRiKU9AQPhUYKD/lyoY/c=" | openssl enc -d -a -A -aes-256-cbc -iter 1 -md md5 -pass pass:'password' -legacy && echo
参数说明
-legacy:启用OpenSSL 3.0+中被标记为Legacy的算法(包括EVP_BytesToKey),这是解决解密失败的核心参数-d:解密模式-a -A:对输入的Base64密文进行解码,-A表示将多行Base64视为单行处理-aes-256-cbc:指定加密算法为AES-256-CBC,与CryptoJS默认一致-iter 1:指定密钥派生的迭代次数为1,匹配CryptoJS默认值-md md5:指定密钥派生使用MD5哈希,匹配CryptoJS默认值-pass pass:'password':指定解密密码
执行上述命令后,即可正确输出明文Hello world!。
内容的提问来源于stack exchange,提问作者Majal
相关产品推荐
相关产品推荐

