You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CryptoJS AES加密字符串返回异常值,寻求技术帮助

问题解决:CryptoJS AES加密解密结果不符合预期

问题原因

你遇到的问题是CryptoJS的API返回值并非直接的字符串:

  • CryptoJS.AES.encrypt() 返回的是CipherParams对象,不是你预期的Base64密文字符串,直接调用无法得到目标格式。
  • CryptoJS.AES.decrypt() 返回的是WordArray对象,默认调用toString()会输出十六进制编码(6869就是"hi"的十六进制ASCII值:h=0x68,i=0x69),而非明文。

修改后的代码

调整加密解密函数,补充对应的转换方法:

<!DOCTYPE html>
<html lang="nl">
    <head>
        <link rel="stylesheet" type="text/css" href="/denoryplay3/css/style.css">
        <title>Encryption</title>
    </head>
    <body>
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js" integrity="sha256-/H4YS+7aYb9kJ5OKhFYPUjSJdrtV6AeyJOtTkw6X72o=" crossorigin="anonymous"></script>

        <script>
        
        function encrypt(data, key){
            // 调用toString()获取Base64格式密文
            return CryptoJS.AES.encrypt(data, key).toString();
        }
        function decrypt(data, key){
            // 指定Utf8编码,将WordArray转换为明文字符串
            return CryptoJS.AES.decrypt(data, key).toString(CryptoJS.enc.Utf8);
        }
        </script>
    </body>
</html>

测试验证

运行以下代码验证效果:

// 查看加密后的Base64密文
alert(encrypt("hi", "12345")); // 会弹出类似U2FsdGVkX1++p462vXg3LggRE5kzRtX3VbKkcMBWuHY=的密文

// 验证解密结果
alert(decrypt(encrypt("hi", "12345"), '12345')); // 弹出明文"hi"

内容的提问来源于stack exchange,提问作者denoryprogrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 21:35:17