在我的应用程序中,我想将文件 URI( /Users/<>/...
或 C://...
)转换为唯一标识符。文件 URI 是外部用户输入,生成的 UUID 将是 key (将一些数据存储到数据库中)。
(拥有 UUID 不是强制性的。我想将可变长度字符串转换为可管理的字符串)。
在 Java 中,要将任意字符串转换为 UUID,我可以使用 UUID.nameUUIDFromBytes
。
它使用 MD-5 生成 UUID。
这个操作(随机字符串->UUID)的碰撞概率和MD5本身的碰撞概率一样吗? (process 2^64 inputs to get a 50% possibility)
或者,将输入转换为 UUID 是否会增加碰撞概率?
最佳答案
对于 UUIDv3,该库仅创建一个标准的 128 位 MD5 哈希值,然后用固定值替换其中的六位,这样结果就不会与其他 UUID 算法的结果发生冲突。
碰撞概率取决于您拥有多少位随机性,因此理论上,UUIDv3 值的碰撞频率会比原始 MD5 哈希值稍微高一些。实际上,这并不重要;两者都有如此多的位,无论如何,几率都是天文数字。
关于java - 类型 3 UUID 冲突概率与 MD5 相同吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58992796/