【发布时间】:2017-12-04 22:46:46
【问题描述】:
我正在创建一个自动递增数字的哈希。我创建了两个示例循环,说明我是如何尝试实现这一点的。
当 #1 运行时,第一个哈希记录到控制台,在循环的第二次迭代中,返回以下错误。错误:摘要已调用
我相信这是由于文档中的此引用:在调用 hash.digest() 方法后,无法再次使用 Hash 对象。多次调用会引发错误。
如何创建一个循环,使用 Node 的加密库一次创建多个哈希?
// Reproduce #1
const crypto = require('crypto');
const hash = crypto.createHash('sha256');
for (let i = 0; i < 5; i++) {
hash.update('secret' + i);
console.log(hash.digest('hex'));
}
【问题讨论】:
-
您使用的是哪个节点版本?对于#1,我必须将
const hash = crypto.createHash('sha256');移动到您的for循环中(实例不可重用)。对于#2,你有一个错字sha1256到sha256 -
我有 Node v8.1.2。感谢您的错字提醒。第一个不起作用,因为它违反了文档中的这一点:
The Hash object can not be used again after hash.digest() method has been called. Multiple calls will cause an error to be thrown. -
我的目标是创建一种方法,该方法基于“API 机密”对某些输入字段进行散列处理来创建序列号。如果我把这个逻辑或任何与之类似的东西放在一起,它就会失败。第一个是有效的序列,但后续的实际上并没有抛出错误。他们只是因为
.digest()和/或.createHash()而制作了无效的连续剧
标签: javascript node.js hash cryptography sha256