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

ES5浏览器环境下无法初始化CryptoJS的使用问题咨询

浏览器端传统JS使用CryptoJS指南

报错原因

你遇到的 Uncaught TypeError: CryptoJS is not a constructor 报错,核心原因是:CryptoJS 对外暴露的是内置了各类加密算法的命名空间对象,本身不是构造函数,无需使用new关键字实例化。

传统用法引入方式

不需要使用任何ES6类、模块化导入语法,用原生HTML引入即可:

  • 从你下载的npm包中提取crypto-js.min.js文件存入项目目录,也可直接使用公开CDN资源
  • 在HTML页面中添加script标签引入:
<script src="./你的本地存储路径/crypto-js.min.js"></script>

引入完成后全局会自动挂载CryptoJS对象,无需额外初始化操作,直接调用其下的方法即可。

AES加解密示例代码

以下是可和C#端互通的常规AES加解密实现,你可以直接复用:

// 密钥、偏移量、加密模式、填充方式必须和C#端配置完全一致
// 16位密钥对应AES-128,24位对应AES-192,32位对应AES-256
var aesKey = CryptoJS.enc.Utf8.parse("替换为你和C#端约定的16/24/32位密钥");
var aesIv = CryptoJS.enc.Utf8.parse("替换为你和C#端约定的16位偏移量");

// 加密方法
function aesEncrypt(plainText) {
  let srcData = CryptoJS.enc.Utf8.parse(plainText);
  let encryptedResult = CryptoJS.AES.encrypt(srcData, aesKey, {
    iv: aesIv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  });
  return encryptedResult.toString();
}

// 解密方法
function aesDecrypt(cipherText) {
  let decryptedResult = CryptoJS.AES.decrypt(cipherText, aesKey, {
    iv: aesIv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  });
  return CryptoJS.enc.Utf8.stringify(decryptedResult).toString();
}

如果不需要定制配置,也可以用简化写法:

// 简化加密
let encryptedStr = CryptoJS.AES.encrypt("待加密内容", "你的密钥").toString();
// 简化解密
let plainStr = CryptoJS.AES.decrypt(encryptedStr, "你的密钥").toString(CryptoJS.enc.Utf8);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:54:02