首页 > 解决方案 > nodejs:如何获取中间哈希值

问题描述

我想使用 sha256 哈希值来保护顺序文件的内容。由于文件必须在运行时扩展,因此每次追加/扩展时都需要进行哈希计算。我想要的是一个永久哈希对象,仅使用附加数据进行更新并允许检索中间结果。

由于应该在 nodejs 中实现,因此 javascript 代码可能如下所示:

const fs = require('fs'), crypto = require('crypto')
var hashPerp = crypto.createHash('sha256')

var data = 'record 1'
fs.writeFileSync('mylist.dat', data)
hashPerp.update(data)
var hashInter = CLONE(hashPerp)
console.log(hashInter.digest('base64'))

data = 'record 2'
fs.appendFileSync('mylist.dat', data)
hashPerp.update(data)
hashInter = CLONE(hashPerp)
console.log(hashInter.digest('base64'))

...

我没有找到合适的对象 CLONE() 函数,并且克隆哈希对象及其内部缓冲区也可能不是解决问题的唯一方法。

有什么建议么?

标签: javascriptnode.jscryptographysha256

解决方案


我想得太复杂了:在我的情况下(表达文件的内容)“SHA” - 安全散列算法 - 实际上不需要,一个简单的散列函数可以完成这项工作。因此,将使用 CRC32,它允许连续添加字节。


推荐阅读