gpt4 book ai didi

javascript - 快速 (XOR-?) 结合 SHA1 哈希生成新的哈希

转载 作者:搜寻专家 更新时间:2023-11-01 04:30:01 27 4
gpt4 key购买 nike

有一个(可能很大)唯一 文本行列表(字符串化的 JSON 数据),我需要为整个文本文档计算一个唯一的哈希值。通常新行会附加到文档中,偶尔也会从中删除一些行,从而为文档生成一个全新的哈希值。

最终目标是能够仅使用哈希来识别相同的文档。

当然,在每次修改后计算整个文档的 SHA1 散列会得到所需的唯一散列,但也会计算量大 - 特别是在仅附加 ~40 个字节的情况下到一个 5 兆字节的文档,所有这些数据都必须再次通过 SHA1 计算。

因此,我正在寻找一种解决方案,以减少计算新哈希所需的时间。

问题属性/要求的总结:

  • 保证每一行都是独一无二的
  • 行的顺序不一定重要(如果不重要则更好)
  • 单行的长度通常很小,但整个文档可能很大
  • 算法可以针对附加数据进行优化(即在这种情况下,删除数据甚至可能需要从头开始重新启动)

我目前的想法是分别计算每一行的 SHA1(或其他)哈希值,然后将这些哈希值异或在一起。那应该满足所有要求。对于新行,我只计算该行的 SHA1 并将其与已知总和进行异或运算。

但是,我有疑问,因为...

  • 我不确定 XORed 哈希是否仍然足够强大以准确识别文档(即,是否存在明显更高的意外冲突概率?)
  • 计算大量短行的 SHA1 散列本身可能在计算上很昂贵(至少在初始化期间)

有人可以阐明这些问题吗?

或者,是否通常可以使用 SHA1(或类似哈希)为附加数据快速生成新哈希(旧哈希 + 附加数据 = 新哈希)?

最佳答案

单独散列每个文件存在问题。

如果添加两个相同的行,组合的异或不会改变。

您最好散列所有单独的行散列。

也许使用 Merkle Tree .

关于javascript - 快速 (XOR-?) 结合 SHA1 哈希生成新的哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38016197/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com