crypto-js中的WordArray到底是什么?-灵析社区

我买了30万的鞋子

crypto-js中的WordArray到底是什么? CryptoJS中的加密算法CryptoJS.AES.encrypt中有一个参数key,需要是WordArray类型 ![image.png](https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241024/d92cc55f4a258a03c07d671e6830719f.png) 这WordArray具体是什么类型? 我把key定义为:const key =CryptoJS.enc.Utf8.parse('LSXRMYY037165336');会出来下面的结果,这结果里为什么有个数组words? ![image.png](https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241024/f266d8d08d8d5a0a18ff16a018e54c62.png) 他和![image.png](https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241024/ee12e97b07f0f47340ea65cfeffe7544.png)有什么区别?

阅读量:14

点赞量:0

问AI
什么是 WordArray? 官方文档是这么描述的: «CryptoJS can convert from encoding formats such as "Base64" , "Latin1" or "Hex" to "WordArray" objects and vice-versa.» 翻译过来就是: "CryptoJS" 可以从 "Base64" 、 "Latin1" 或 "Hex" 等编码格式转换为 "WordArray" 对象(数组也算一种全局对象),反之亦然 一般来说,秘钥字符串、明文字符串这些都会被转为 "WordArray" 类型,方便处理 示例用法: let words = CryptoJS.enc.Base64.parse("SGVsbG8sIFdvcmxkIQ=="); let base64 = CryptoJS.enc.Base64.stringify(words); let words = CryptoJS.enc.Latin1.parse("Hello, World!"); let latin1 = CryptoJS.enc.Latin1.stringify(words); let words = CryptoJS.enc.Hex.parse("48656c6c6f2c20576f726c6421"); let hex = CryptoJS.enc.Hex.stringify(words); let words = CryptoJS.enc.Utf8.parse("𔭢"); let utf8 = CryptoJS.enc.Utf8.stringify(words); let words = CryptoJS.enc.Utf16.parse("Hello, World!"); let utf16 = CryptoJS.enc.Utf16.stringify(words); let words = CryptoJS.enc.Utf16LE.parse("Hello, World!"); let utf16 = CryptoJS.enc.Utf16LE.stringify(words); 为什么输出 key 返回了长度为 4 的数组? 上文提及,字符串会被转为 “单词数组”,而每个 "ASCII" 字符在 "UTF-8" 编码下通常只占用 一个字节 ,所以按 四个字符 划分为一个处理后的 32 位整数,LSXR|MYY0|3716|5336 对应长度为 4 参考: «"官方文档-> encoders" (https://link.segmentfault.com/?enc=RHhbB7G9nyF6Za7f8c8CVw%3D%3D.WQt7cGi7s6OiWe8duKCwuhUQx6PKw2wJglSvbBBsZ6fBiqIg4pWdi4ziRtc6CaNT)»