什么是WordArray?

问题描述 投票:2回答:1

我一直在查看crypto-jsits encoderWordArray相互转换。我查了一下the documentation,找不到关于WordArray可能是什么的任何解释。

据我所知,JavaScript中甚至没有名为typed arrayWordArray,并且在任何使用该名称的类型化数组上也没有DataView

我知道DataView是什么,但是我不确定在这里是什么意思。

奇怪,我在crypto-js上发现的所有线程(WORD is in the Visual C++ parlanceWORDhere)都使用单词here,而没有人真正询问它是什么。

有人真的可以告诉我吗?是here吗?还是普通字节数组(WordArrayuntyped Uint16Array整数值)的另一个花哨词?

javascript cryptography cryptojs
1个回答
0
投票

该类在CryptoJS库的Uint8Array中定义:

Array

放在其中的值放在最高有效位中(我已根据源代码检查过此值)。由于UTF-8编码为8位字节,因此这些字节被分组在最上面的16位中,然后将core.js设置为值2。]

因此,如果您要使用Latin1

UTF-8将值/** * An array of 32-bit words. * * @property {Array} words The array of 32-bit words. * @property {number} sigBytes The number of significant bytes in this word array. */ var WordArray = C_lib.WordArray = Base.extend({ 编码为十六进制值,则将得到一个具有十六进制值number的单元素数组。

通常(对称)密码算法被指定为对位进行操作。但是,它们通常被优化为可以在32位或64位字上工作,因为在32位或64位计算机(例如i86或x64)上,它们是最佳的。因此,执行任何操作之前,任何语言的库都将在内部转换为单词。

通常,库将其操作定义为使用字节而不是字。从某种意义上说,CryptoJS在字缓冲区上运行,这有点特殊。这是一种逻辑,因为JavaScript并未定义字节数组。它还跳过了一步,否则您将不得不从UTF-8转换为字节,然后在算法规范内再次转换为单词。

CryptoJS还存在一个64位字数组,对于诸如SHA-512之类的针对64位操作进行了优化的算法无疑。

© www.soinside.com 2019 - 2024. All rights reserved.