gpt4 book ai didi

language-agnostic - md5 哈希的前 32 位是否与任何其他子字符串一样为 "random"?

转载 作者:行者123 更新时间:2023-12-04 00:40:58 25 4
gpt4 key购买 nike

我希望创建一些数据对象的 32 位哈希。由于我不想编写自己的散列函数并且 md5 可用,因此我目前的方法是使用 md5 散列中的前 32 位(即前 8 个十六进制数字)。这是可以接受的吗?

换句话说,md5 哈希的前 32 位是否与任何其他子字符串一样“随机”? 或者有什么理由我更喜欢最后 32 位?或者可能将四个 32 位子串异或在一起?

一些先发制人的澄清:

  • 这些散列不需要加密安全。
  • 我不关心 md5 的性能——它的速度足以满足我的需要。
  • 这些散列只需要足够“随机”,以便很少发生冲突。
  • 在这个系统中,项目的数量不应超过 10,000(实际上它可能不会达到一半)。所以在最坏的情况下,遇到任何冲突的概率应该是大约 1%(假设找到了足够“随机”的散列)。
  • 最佳答案

    对于任何好的散列函数,各个位应该是近似随机的。因此,您应该安全地仅使用 MD5 哈希的前 32 位。

    或者,您也可以使用 CRC32,它的计算速度应该快得多(代码大约 20 行)。

    关于language-agnostic - md5 哈希的前 32 位是否与任何其他子字符串一样为 "random"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/860405/

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