如何建设企业网站ppt,凡科建站是不是关闭企业网站,锦州网站建设公司,网站新闻稿模板前言#xff1a;这里只说js用的CryptoJS库里的相关内容#xff0c;只用js来进行代码操作和讲解。 这里网上相关的帖子很少#xff0c;不得已问了很长时间AI 想引用CryptoJS库情况分两种#xff0c;一种是html引用#xff0c;另一种是在Nodejs里引用。
一、引用CryptoJS库… 前言这里只说js用的CryptoJS库里的相关内容只用js来进行代码操作和讲解。 这里网上相关的帖子很少不得已问了很长时间AI 想引用CryptoJS库情况分两种一种是html引用另一种是在Nodejs里引用。
一、引用CryptoJS库
1.在html里引用就用script标签里放CryptoJS的cdn即可
script srchttps://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js/script
2.在Nodejs里使用就用下面的代码当然你用之前得先用cmd把库下载到本地具体步骤网上查询。
const CryptoJS require(crypto-js);二、WordArray对象
什么是WordArray对象呢我具体问了下GPT下面是具体解释
在 CryptoJS 中所有的加密操作和字节数组都由 WordArray 类型表示。CryptoJS 的加密和解密过程本质上都在处理字节数据WordArray所以无论你使用的是哪种加密算法解密后的结果仍然是 字节数组WordArray 对象。所有通过 CryptoJS 加密的算法如 AES、DES、Triple DES、RC4、Rabbit 等都返回一个 WordArray 对象它们的解密过程同样返回一个 WordArray 类型的数据。因此你可以对这些算法的解密结果使用相同的 .toString() 方法来获取不同的编码格式。
另外WordArray对象还有个重要作用即解密过程中的数据都保存在 WordArray 类型里。
在解密过程中解密的结果通常是一个 WordArray 对象它包含了解密后的字节数据。这个 WordArray 对象可以通过 .toString() 方法转换为其他格式的字符串如 UTF-8、Hex、Base64 等
无论你使用 CryptoJS 执行哪种加密或解密算法例如 AES、DES、Triple DES、RC4 等它们都会以 WordArray 类型 存储数据。 WordArray 类型的基本概念
CryptoJS 中的 WordArray 是一种 字节数组 的表示它被用于存储加密或解密过程中的 二进制数据比如密文、明文、密钥、初始化向量等。WordArray 是 CryptoJS 库的核心数据类型之一它的结构有两个属性
words这是一个数组包含了数据的字节值。每个 word 是一个 32 位的整数4 个字节。所以words 数组实际上代表了所有字节数据的集合。sigBytes这个属性表示字节数据的总字节数例如16 字节、32 字节等。它记录的是有效字节的长度。
想打印WordArray类型的变量也简单下面的代码就可以打印(不要忘了先引用CryptoJS)
let key CryptoJS.enc.Utf8.parse(f5d965df75336270);
console.log(key); // 输出的会是一个字节数组包含字符对应的字节值
打印出就是下面截图这样 三、WordArray储存的解密结果如何转换不同的编码格式
上面已经知道了解密结果储存在WordArray对象里我们可以将解密结果转换为不同的编码格式比如 Base64, Hex, 或者 字节数组 等。
// 假设你已经有了加密的密文和相应的解密配置
let key CryptoJS.enc.Utf8.parse(f5d965df75336270);
let iv CryptoJS.enc.Utf8.parse(97b60394abc2fbe1);
let encryptedData result; // 假设 result 是 Base64 编码的密文// 解密
let decryptedData CryptoJS.AES.decrypt(encryptedData, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.NoPadding
});// 转换为不同的格式
let plaintextUtf8 decryptedData.toString(CryptoJS.enc.Utf8); // 明文字符串
let decryptedHex decryptedData.toString(CryptoJS.enc.Hex); // 十六进制字符串
let decryptedBase64 decryptedData.toString(CryptoJS.enc.Base64); // Base64 字符串
let decryptedLatin1 decryptedData.toString(CryptoJS.enc.Latin1); // Latin1 编码字符串
let decryptedBytes decryptedData.words; // 字节数组// 输出不同的格式
console.log(UTF-8:, plaintextUtf8);
console.log(Hex:, decryptedHex);
console.log(Base64:, decryptedBase64);
console.log(Latin1:, decryptedLatin1);
console.log(Bytes:, decryptedBytes);总结
.toString(CryptoJS.enc.Utf8)将字节数组转换为 UTF-8 编码的字符串这个一般最常用。.toString(CryptoJS.enc.Hex)将字节数组转换为十六进制字符串。.toString(CryptoJS.enc.Base64)将字节数组转换为 Base64 编码的字符串。.toString(CryptoJS.enc.Latin1)将字节数组转换为 Latin1 编码的字符串。.words直接获取字节数据以字节数组的形式。