@bitgo/blake2b
纯 JavaScript 中的 Blake2b( 64- bit 版本)
此模块基于 @ dcposch b. 实施《布拉克2》b,经过一些修改:
- 这个模块需要您在
out缓冲,保存分配 - 此模块允许您设置
salt财务报告和审定财务报表personal参数 - 此模块导出 libsodium 样式参数的常数
- 使用 WASM 版本( 在支持的情况下) 进行大规模性能提升
所有功劳都归于@dcposch ,因为做了艰苦的工作 移植 从 C 到 JavaScript 执行 .
使用量
var blake2b = require('@bitgo/blake2b');
var output = new Uint8Array(64);
var input = Buffer.from('hello world');
console.log('hash:', blake2b(output.length).update(input).digest('hex'));
API 密码
var hash = blake2b(outLength, [key], [salt], [personal], [noAssert = false])
创建新散列实例, 可选择使用 key, (中文(简体) ), salt 财务报告和审定财务报表
personal设置旁通输入断言 noAssert 改为 true。 。 。 .
所有参数必须是 Uint8Array, (中文(简体) ), Buffer 或具有兼容性的另一个对象
API (英语). 所有参数还必须满足下列限制,或
AssertionError 将被抛出(除非 noAssert = true:
outLength必须在以下常数定义的字节范围内.key是可选的,但必须在常数定义的字节范围内 如果给出,则在下文。 此值必须保密,并可用于创建 前缀-MAC.salt是可选的,但必须准确SALTBYTES,如果给出。 你用得着 此参数为每个用户 ID,或本地版本方案的一种。 这个 值不需要保密.personal是可选的,但必须准确PERSONALBYTES,如果给出。 你们可以 使用此参数作为类app id,或全局版本方案. 这个 值不需要保密.
var hash = hash.update(input)
以新方式更新散列 input后调用此方法 .digest 将投出
错误.
var out = hash.digest(out)
完成散列并将摘要写给 out。 。 。 . out 必须完全平等
改为 outLength 输入 blake2b 方法.
也可以通过 hex 将散列作为十六进制字符串或没有参数
将散列带回新的Uint8箭头.
常数
blake2b.BYTES_MIN最小长度outblake2b.BYTES_MAX最长长度outblake2b.BYTES建议的默认长度outblake2b.KEYBYTES_MIN最小长度keyblake2b.KEYBYTES_MAX最长长度keyblake2b.KEYBYTES建议的默认长度keyblake2b.SALTBYTES所需长度saltblake2b.PERSONALBYTES所需长度personal
安装
npm install @bitgo/blake2b
测试向量
此寄存器包括测试向量
{outlen, out, input, key, salt, personal} 测试符合性的对象
违反《公约》和其他规定:
- 行数 2 - 257 (中文(简体) ) 没有钥匙的散心测试 BLAKE2 测试向量
- 行数 258 - 513 (中文(简体) ) 是用钥匙散开的测试,取自 BLAKE2 测试向量
- 行数 514-577号 这些试验是用钥匙、盐和个性化来进行散心试验的 锂测试