有一个(可能很大的)唯一文本行列表(字符串化JSON数据)我需要计算整个文本文档的唯一哈希值。通常会在文档中附加新行,有时会从中删除一些行,从而产生一个全新的文档哈希值。
最终目标是能够使用哈希识别相同的文档。
当然,在每次修改后计算整个文档的SHA1哈希值会给我所需的唯一哈希值,但也会计算成本高昂 - 特别是在只附加约40个字节的情况下到5兆字节的文档,所有数据都必须再次通过SHA1计算。
所以,我正在研究一种解决方案,它可以减少计算新哈希所需的时间。
问题属性/要求的摘要:
我目前的想法是分别计算每一行的SHA1(或其他)哈希值,然后将哈希值一起计算。这应该满足所有要求。对于新行,我只计算该行的SHA1,并将其与已知总和进行异或。
然而,我怀疑是因为......
任何人都能对这些问题有所了解吗?
或者,通常可能使用SHA1(或类似的哈希)快速生成附加数据的新哈希(old hash
+ appended data
= new hash
)?
答案 0 :(得分:2)
答案 1 :(得分:0)
您可以对喜欢流计算执行增量更新:
var crypto = require('crypto');
var shasum = crypto.createHash('sha1');
shasum.update("Hello, ");
shasum.update("World!");
console.log(shasum.digest('hex'));
shasum = crypto.createHash('sha1');
shasum.update("Hello, World!")
console.log(shasum.digest('hex'));