java - 类型 3 UUID 冲突概率与 MD5 相同吗

标签 java uuid

在我的应用程序中,我想将文件 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/

相关文章:

java - 识别有效的 getter 和 setter

swift - 在 Swift 中将字符串验证为有效的 UUID

c# - 根据字符串生成UUID

java - 如何创建自定义 portlet 操作/模式以及如何在 Liferay 中调用它们?

Java 图形用户界面 : Cannot find Symbol buildPanel()

java - PostMapping Spring 启动注释不起作用

android - AltBeacon 的 Android Beacon 库获取 major、minor 和 UUID

c - 在 Linux 中获取卷 UUID

java - 如何在 java 中将 UUID 保存为二进制 (16)

java - 如何在java中重置计时器?