Wat*_* v2 8 javascript cryptography cryptojs
我一直在寻找加密JS和其编码转换和从WordArray。我查阅了文档,找不到任何关于 aWordArray可能是什么的解释。
据我所知,在 JavaScript 中甚至没有一个名为的类型化数组WordArray,并且DataView在任何具有该名称的类型化数组中也没有。
我知道WORDVisual C++ 中的a是什么,但我不确定它在这里是什么意思。
奇怪的是,我在crypto-js上发现的所有线程(这里、这里和这里)都在使用这个词,而没有人真正问它是什么。WordArray
真的有人能告诉我吗?是Uint16Array吗?或者只是普通字节数组(Uint8Array或无类型 Array整数值)的另一个花哨词?
该类core.js在 CryptoJS 库中定义:
/**
* 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({
Run Code Online (Sandbox Code Playgroud)
放在那里的(字节)值放在字的最高有效位中(我已经根据源代码检查过)。
例如,如果您将值"he"作为 UTF-8(或 Latin1 或 ASCII)放入其中,那么您将获得一个包含该值的单元素数组68_65_00_00,并将其words设置为值 2。这是因为 UTF-8 编码为8 位字节,这些字节被分组在最高的 16 位中。
通常(对称)加密算法被指定为对位进行操作。然而,它们通常被优化为在 32 或 64 位字上工作,因为它们在 32 或 64 位机器(如 i86 或 x64)中是最优化的。因此,任何语言的任何库都会在执行操作之前在内部转换为单词。
通常库定义他们的操作来使用字节而不是单词。CryptoJS 有点特殊,因为它对单词缓冲区进行操作。这是合乎逻辑的,因为 JavaScript 没有定义字节数组。它还跳过一个步骤,否则您必须在算法实现中从 UTF-8 转换为字节,然后再次转换为单词。
CryptoJS 也有一个 64 位字数组,毫无疑问,对于 SHA-512 等针对 64 位操作进行了优化的算法。
| 归档时间: |
|
| 查看次数: |
2889 次 |
| 最近记录: |