我有一些 PHP 代码,无法编辑,还有一个充满加密消息的数据库。
$key = '297796CCB81D2553B07B379D78D87618'
return $encrypted = openssl_encrypt($data, 'AES-128-ECB', $key);
我必须编写一些 JS 代码来加密和解密这些消息。我正在使用 CryptoJS 来达到这个目的。
const key = '297796CCB81D2553B07B379D78D87618'
let k = CryptoJS.enc.Base64.parse(key)
let cypher = CryptoJS.AES.encrypt(this.text, k, {mode: CryptoJS.mode.ECB})
this.cypher = CryptoJS.enc.Base64.stringify(cypher.ciphertext)
我无法让这些代码产生相同的结果。对于“测试”字符串,我得到以下结果:JS: H1AG6j/i/iSqifSNCG5JKw==
, PHP: Nqrur4UMEicEMwJC39qq0A==
我尝试了 3 天来解决这个问题,但找不到问题所在。
我唯一可以编辑的代码是JS。
我明白是什么问题了。
PHP 中的 openssl_encrypt 将密钥视为 UTF-8 字符串。获取足够的长度后,它会忽略下一个字符,因此我们的密钥:“297796CCB81D2553B07B379D78D87618”修剪为“297796CCB81D2553”。
这段代码正在运行:
// JS
const key = '297796CCB81D2553'
let k = CryptoJS.enc.Utf8.parse(key)
let cypher = CryptoJS.AES.encrypt(this.text, k, {mode: CryptoJS.mode.ECB})
this.cypher = CryptoJS.enc.Base64.stringify(cypher.ciphertext)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)