在我的应用程序中,我想将文件URI(/Users/<>/...
或C://...
)转换为唯一标识符。文件URI是外部用户输入,生成的UUID将是密钥(用于将一些数据存储到DB中)。
(具有UUID不是强制性的。我想将可变长度的字符串转换为可管理的字符串)。
在Java中,要将任意字符串转换为UUID,我可以使用UUID.nameUUIDFromBytes
。
它使用MD-5生成UUID。
此操作(随机字符串-> UUID)的碰撞概率是否与MD5本身的碰撞概率相同? (process 2^64 inputs to get a 50% possibility)
或者,将输入转换为UUID是否会增加碰撞概率?
答案 0 :(得分:0)
对于UUIDv3,该库仅创建一个标准的128位MD5哈希,然后用固定值替换其中的6位,因此结果不会与其他UUID算法的结果相冲突。
冲突概率取决于您拥有多少个随机位,因此从理论上讲,UUIDv3值的冲突频率要比原始MD5哈希值稍高。实际上,这无关紧要。两者都有那么多位,无论如何,赔率都是天文数字。