crypto-js中的WordArray到底是什么?

crypto-js中的WordArray到底是什么?
CryptoJS中的加密算法CryptoJS.AES.encrypt中有一个参数key,需要是WordArray类型
image.png
这WordArray具体是什么类型?

我把key定义为:const key =CryptoJS.enc.Utf8.parse('LSXRMYY037165336');会出来下面的结果,这结果里为什么有个数组words?
image.png
他和image.png有什么区别?

阅读 2.4k
1 个回答

什么是 WordArray?

官方文档是这么描述的:

CryptoJS can convert from encoding formats such as Base64 , Latin1 or Hex to WordArray objects and vice-versa.

翻译过来就是:
CryptoJS 可以从 Base64Latin1Hex 等编码格式转换为 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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进