gpt4 book ai didi

java - 如何安全地将 MD5 哈希转换为 Java/Scala 中的存储桶?

转载 作者:搜寻专家 更新时间:2023-11-01 03:37:44 24 4
gpt4 key购买 nike

我想将 ID 散列到桶中,这样

  1. 没有偏向于特定的桶
  2. 应始终将相同的 ID 分配给相同的存储桶
  3. ID 应独立分布在所有存储桶中
  4. 桶的大小应该(几乎)相等

我的策略是获取 ID 的 MD5 哈希值,将其转换为数字,然后将其修改为存储桶。

val hash: Array[Byte] = MessageDigest.getInstance("MD5").digest("Hello")
val number: java.math.BigInteger = new BigInteger(hash)
val bucket = number.mod(new BigInteger("1000"))

这种方法是否保持了 MD5 提供的优良特性?这样可以实现上述目标吗?

最佳答案

你的方法是合理的(如果慢的话),并且保持了 MD5 除了抗碰撞性之外的所有良好特性。

不过,在桶选择算法中,缺乏抗碰撞性很少是一个问题。开发要求系统 1. 存储不受信任方提供的数百万个 ID,以及 2. 依赖于大致均匀的分布以确保可靠性和/或正确性。

关于java - 如何安全地将 MD5 哈希转换为 Java/Scala 中的存储桶?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25436538/

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