AES-256-CBC加密结果无法在第三方工具解密问题求助
跨工具AES解密失败原因排查
核心问题点
- 密文二次Base64编码
PHP内置的openssl_encrypt在第四个参数为0时,默认返回的已经是Base64编码后的密文,你的代码又对该结果做了一次base64_encode处理,最终输出的密文是经过两次Base64编码的结果。第三方工具解密时默认只会对输入密文做一次Base64解码,解码后的数据长度自然不符合AES块大小要求(16字节倍数),就是你看到的报错原因。 - **密钥做了非标准哈希处理
你没有直接使用预设的256位密钥&E)H+MbQeThWmZq4t7w!z%C*F-JaNcRf,代码中先对原始密钥做了SHA256哈希,得到64位十六进制字符串后作为实际传入加密的密钥,第三方工具默认会直接使用你输入的原始密钥做运算,两边密钥完全不一致。 - IV做了非标准哈希处理
你也没有直接使用预设的IV42301-4279279-31,代码中先对原始IV做了SHA256哈希,取结果前16位作为实际运算的IV,第三方工具默认直接使用你输入的原始IV,两边IV完全不一致。
第三方工具解密操作步骤
如果要在第三方AES工具中正常解密,按如下步骤预处理参数即可:
- 对原始预设密钥做SHA256哈希,得到的64位十六进制字符串为实际加密密钥
- 对原始预设IV做SHA256哈希,取结果前16位字符为实际加密IV
- 先对你拿到的密文做一次Base64解码,得到的字符串作为实际待解密密文输入工具即可
内容的提问来源于stack exchange,提问作者Mohsin Khan
相关产品推荐
相关产品推荐

