gpt4 book ai didi

java - 哈希码与 SHA-1

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:58:56 24 4
gpt4 key购买 nike

我想比较一些代表树的大对象并缓存某物以避免每次将新对象与一个已经存在的对象进行比较...

问题是最好的东西是什么? (性能和碰撞之间的折衷...)。

一方面,我有一个基于各个字段值的常规 hashCode 函数(遵循 effective Java 的第 3 章。但我无法评估这种方法带来的潜在冲突。

另一方面,我使用标准 java 发行版中的 MessageDigest 方法和 SHA-1 算法。我认为它不会有效率,但我可能会减少碰撞。我对吗 ?在我的上下文中这是正确的解决方案还是我完全错了?

问题是我不知道对象的大小。另请注意,计算出的值不会在哈希表中使用。

谢谢...

最佳答案

请参阅以下内容:

请记住以下几点:

  • 一个对象可能不相等,但具有相同的哈希码
  • 您的碰撞可能性取决于您遇到的物体数量。
  • 哈希码的用处取决于您如何实现检查

通常,您可以根据预期对象的数量和可能的散列数(最大散列值)来确定发生碰撞的可能性。参见 http://en.wikipedia.org/wiki/Birthday_paradox详细解释。

个人? Java 对象(实例化类)< 10,000?哈希码。代表文件/blob/大量数据? SHA-1。我在我的数据库中使用 SHA-1 哈希来防止人们对同一文件多次进行 ETL 工作。然后,我在第二级再次使用 SHA-1 哈希,以防止人们对文件中的同一部分进行多次 ETL 处理(例如,不同的文件但相同的顺序出现两次)。

关于java - 哈希码与 SHA-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/853332/

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