Java随机UUID是否可预测?

Java随机UUID是否可预测?,第1张

Java随机UUID是否可预测?

好吧,如果您想知道UUID的随机性,则必须查看源。

以下代码部分摘自OpenJDK7(与OpenJDK6相同):

public static UUID randomUUID() {        SecureRandom ng = numberGenerator;        if (ng == null) { numberGenerator = ng = new SecureRandom();        }        byte[] randomBytes = new byte[16];        ng.nextBytes(randomBytes);        randomBytes[6]  &= 0x0f;          randomBytes[6]  |= 0x40;          randomBytes[8]  &= 0x3f;          randomBytes[8]  |= 0x80;          return new UUID(randomBytes);    }

如您所见,16个字节中只有2个不是完全随机的。在第六个字节中,您丢失8位中的4位,在字节8中,您失去2位随机性。

因此,您将获得具有122位随机性的128位值。

*** 作可能引起的唯一问题是,很有可能将您的数据识别为UUID。因此,如果您想将其隐藏在其他随机数据中,将无法使用…



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5488946.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存