Java的UUID.randomUUID有多好?

Java的UUID.randomUUID有多好?

我知道随机UUID在理论上具有非常非常非常低的碰撞概率,但实际上,我想知道Java randomUUID()在没有碰撞方面有多好?有没有人有经验可以分享?



慕田峪7331174
浏览 4062回答 3
3回答

慕运维8079593

有没有人有经验可以分享?有2^122用于4型UUID可能的值。(规范说你输入的类型为2位,版本号又输了4位。)假设您每秒产生100万个随机UUID,那么在您的生命中发生重复的可能性将会非常小。要检测重复,您必须解决每秒比较100万个新UUID与您之前生成的所有UUID 1的问题!任何人在现实生活中经历(即实际注意到)重复的机会甚至小于消失的小......因为寻找碰撞的实际困难。当然,您通常会使用伪随机数生成器,而不是真正随机数的源。但我认为,我们可以相信,如果你正在使用你的加密强度随机数的可信供应商,那么它就会被加密强度,并重复的概率是相同的理想(不带偏见的)随机数发生器。但是,如果您使用带有“损坏”加密随机数生成器的JVM,则所有投注均已关闭。(这可能包括某些系统上“熵短缺”问题的一些解决方法。或者有人在你的系统或上游修改了你的JRE。)1 - 假设您使用了匿名评论者提出的“某种二进制btree”,每个UUID将需要O(NlogN)一些RAM内存来表示N不同的UUID,假设低密度和比特的随机分布。现在乘以1,000,000以及您要运行实验的秒数。我认为测试高质量RNG碰撞所需的时间长度并不实用。甚至没有(假设的)聪明的表示。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java