好吧,如果您想知道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。因此,如果您想将其隐藏在其他随机数据中,将无法使用…
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)