什么是 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)»