当前位置: 首页 > 知识库问答 >
问题:

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

朱欣荣
2023-12-27

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有什么区别?

共有1个答案

贺子昂
2023-12-27

什么是 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
 类似资料:
  • 本文向大家介绍Javascript中的Prototype到底是什么,包括了Javascript中的Prototype到底是什么的使用技巧和注意事项,需要的朋友参考一下 Javascript也是面向对象的语言,但它是一种基于原型Prototype的语言,而不是基于类的语言。在Javascript中,类和对象看起来没有太多的区别。 什么是prototype: function定义的对象有一个proto

  • 问题内容: 所有外部URL都类似于“模块/操作?key1 = param1”。无法进行自定义- 但速度很快。区别在于,第一个使用PHP的GET,第二个使用PATH_INFO。 我已经看过好几次了,但仍然不知道它到底是什么。它有什么作用? 问题答案: 实际上,它与服务PHP页面的Apache Web服务器有关,而与PHP本身无关。 是在启用指令后由Apache设置的环境变量。它将包含尾随路径名信息,

  • 本文向大家介绍Java中的Null到底是什么,包括了Java中的Null到底是什么的使用技巧和注意事项,需要的朋友参考一下 前言 对于Java程序员来说,null是令人头痛的东西。时常会受到空指针异常(NPE)的骚扰。连Java的发明者都承认这是他的一项巨大失误。Java为什么要保留null呢?null出现有一段时间了,并且我认为Java发明者知道null与它解决的问题相比带来了更多的麻烦,但是n

  • CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法。 在线演示:https://tool.oschina.net/encrypt 目前已支持的算法包括: MD5 SHA-1 SHA-256 AES Rabbit MARC4 HMAC HMAC-MD5 HMAC-SHA1 HMAC-SHA256 PBKDF2 示例代码: var digest = Crypt

  • 本文向大家介绍JavaScript中的this到底是什么(一),包括了JavaScript中的this到底是什么(一)的使用技巧和注意事项,需要的朋友参考一下 对于常年使用C++,C#,Java等这些面向对象语言的程序员来说,几乎天天都和this打交道。在这些语言里,this含义非常明确,就是指向当前的对象实例,我们用起来也是相当的放心。然而,到了JavaScript这个动态语言里,this的写法

  • 问题内容: Java中的引用到底是什么?它是一个内存地址吗?Java引用等同于取消引用的C ++指针吗? 换句话说,给出以下内容: 上面的比较是否等同于比较C ++中的两个指针? 问题答案: 相当于在C / C ++中比较两个指针,是的。 但是,Java中的引用和C / C ++中的指针之间有两个非常重要的主要区别: Java引用无法执行指针算术:不能将3引用“加”, 只能 使其指向另一个(已知)