首页 > 解决方案 > 无法使用 OpenSSL 通过 Javascript 解密 AES 加密文件

问题描述

密文由 Javascript 使用 AES 算法以十六进制格式加密。我首先用 Base64 对其进行编码,然后使用 OpenSSL 对其进行解密。

但是失败了,不知道哪里错了。

我正在使用 Windows 编译版本的 OpenSSL。 http://gnuwin32.sourceforge.net/packages/openssl.htm

命令如下:

openssl enc -aes-128-cbc -a -A -in Cipherbase64.txt -out PlainText.txt -K 31323334353637383930303030303030 -iv 31323334353637383930303030303030 -d

结果:

bad decrypt
6396:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:./crypto/evp/evp_enc.c:461:

密文(十六进制)

4cb4eb49df960e82c14e158ac418ca918736e4fbb730f532fc37d226e0e8b0e3ce0571ce4c146a6a9e037b9b79d8077568326d7fe2a3f9a91d266cfeb8bfac5668f526bc4d5ee1a21cbe85c8efab8cd1fe29b4a2b412468c6d97b7a3bfd2f69c50691e181fde43710bc61ffff2c6e7cbab59de70b97d993707c16e4a909273cc873d9156dda0ad03214e29048ac39532b8ec11c071174219fefa85e0d489468036154d19d2b683b20b07589abb9f4d863fcd17598d43a8b82d37236ceee7588d08a22f4c9662bba7f4cf6595f28b0e7b7e62f9be2d42f1b11f5c06aca7ed7568d8922d9155c229a8d57b251695c2bd645cb44539e4278b4431ac60a318fbd22afe18b204f9730f86a07c43355ce89f9646be5810e0c6bd2043066d359efe73c8e0ac7f581e048ed1809ad2720ea96f528d0acc7fd622b86d3073e8b1ac0b5d70f4e92b045e8cdf1fb6c999332ba2c279ebab2262589082a8214187a8904671a2c4eec8828335dc7f49fe438fb4e34c762e9f7febe30672a9ced8b0a2b66373d3a3b9efbe46e63f4d8b2723ebe85736f5

感谢 Topaco 的帮助。由于我的疏忽,把CTR误认为CBC,造成混乱。

标签: encryptionopensslaes

解决方案


您可以尝试以下方法:

openssl enc -aes-128-cbc -a -A -in Cipherbase64.txt -out PlainText.txt -K 31323334353637383930303030303030 -iv 31323334353637383930303030303030 -d

-Kand-iv选项之后,输入必须是十六进制字符串,即1234567890000000您必须使用31323334353637383930303030303030. 该-A选项表示 Base64 编码的密文包含在一行中,此处为. 所以没有必要使用换行符。

更新:

事实证明,实际用于生成发布密文的 JavaScript代码使用 CTR模式进行加密(而不是CBC模式)。因此,可用于解密发布的密文的 OpenSSL 语句为:

openssl enc -aes-128-ctr -a -A -in Cipherbase64.txt -out PlainText.txt -K 31323334353637383930303030303030 -iv 31323334353637383930303030303030 -d

解密后的文字是:

{"sign":"13adab9285fe86206b73e029ff0d290fc0e31237","timestamp":1570608017,"logid":"MTU3MDYwODA2MjAzMjAuMTMzMjE0Nzc2OTIxNTgxNDY=","uk":3012946979,"shareid":547370362,"fid_list":"[\"482622974717034\"]","input":"aaxb","vcode":"33324238656332346361663334656637323237633636373637643239666664336662393132313032313738303030303030303030303030303031353730363038303530B0D6C0036A1909217D2CDCD5B76B46FB"}

可以在这里轻松验证。


推荐阅读