为了账号安全,请及时绑定邮箱和手机立即绑定

Java的UUID.randomUUID有多好?

Java的UUID.randomUUID有多好?

慕田峪7331174 2019-08-06 15:41:22
Java的UUID.randomUUID有多好?我知道随机UUID在理论上具有非常非常非常低的碰撞概率,但实际上,我想知道Java randomUUID()在没有碰撞方面有多好?有没有人有经验可以分享?
查看完整描述

3 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

有没有人有经验可以分享?

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碰撞所需的时间长度并不实用。甚至没有(假设的)聪明的表示。


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 4061 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号