作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想将 ID 散列到桶中,这样
我的策略是获取 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/
我是一名优秀的程序员,十分优秀!