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

ASP.NET Core应用使用CryptoJS加密时报错:找不到变量CryptoJS

问题排查及解决方案

错误根因

  • 文件名不匹配:你放入wwwroot/js目录的是ads.js,但在_Layout.cshtml里引用的是aes.js,浏览器找不到对应js文件,自然无法加载CryptoJS对象
  • 依赖缺失:就算文件名写对,单独引用aes.js也不够,CryptoJS的AES模块依赖核心库core.js和编码工具库enc-utf8.js,缺了这些依赖CryptoJS也不会被正确初始化
  • 脚本加载顺序错误:如果你的Index.cshtml里的CheckData函数所在的script标签,位置在_Layout的aes.js引用之前,会导致代码执行时CryptoJS还没加载完成
  • 无用文件干扰:你添加的AESEncryption.cs是后端C#的加密类,和前端JS的CryptoJS运行没有任何关系,不会帮你注入CryptoJS全局对象

解决步骤

  1. 修正文件名:确认你下载的CryptoJS相关文件名称,把引用路径里的文件名和实际存放的文件名统一,如果你存的是ads.js就把引用改成<script src="~/js/ads.js" type="text/javascript"></script>,如果确实是aes.js就把实际存放的文件名改成aes.js
  2. 完整引入CryptoJS依赖:优先直接引入完整的CryptoJS包,从官方下载完整的crypto-js.min.js放到wwwroot/js目录,直接引用这个完整包就不用单独引入各个模块:
<script src="~/js/crypto-js.min.js" type="text/javascript"></script>

如果要拆分引用,要按照顺序引入所有依赖:

<script src="~/js/core.js"></script>
<script src="~/js/enc-utf8.js"></script>
<script src="~/js/aes.js"></script>
<script src="~/js/mode-cbc.js"></script>
<script src="~/js/pad-pkcs7.js"></script>
  1. 调整脚本加载顺序:确保_Layout.cshtml里的CryptoJS相关引用,位置在Index.cshtml的自定义脚本之前,你也可以把自定义的CheckData函数用DOM加载完成事件包裹,避免加载顺序问题:
document.addEventListener('DOMContentLoaded', function() {
    window.CheckData = function() {
        var txtUserName = $('#Username').val();
        var txtpassword = $('#Password').val();

        if (txtUserName == "") {
            alert('Please enter UserName');
            return false;
        }
        else if (txtpassword == "") {
            alert('Please enter Password');
            return false;
        }
        else {
            var key = CryptoJS.enc.Utf8.parse('8080808080808080');
            var iv = CryptoJS.enc.Utf8.parse('8080808080808080');
            var encryptedlogin = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(txtUserName), key,
                { keySize: 128 / 8, iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
            $('#Username').val(encryptedlogin);
            var encryptedpassword = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(txtpassword), key,
                { keySize: 128 / 8, iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
            $('#Password').val(encryptedpassword);
        }
    }
})
  1. 验证加载情况:打开浏览器控制台,切换到网络(Network)标签,刷新页面看你引用的js文件是不是返回200状态,没有404错误,然后在控制台输入CryptoJS回车,能正常输出对象就说明加载成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:06:04