Rob*_*ert 33
好吧,如果你想知道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; /* clear version */
randomBytes[6] |= 0x40; /* set to version 4 */
randomBytes[8] &= 0x3f; /* clear variant */
randomBytes[8] |= 0x80; /* set to IETF variant */
return new UUID(randomBytes);
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,16个字节中只有2个不是完全随机的.在第六个字节中,您将丢失4个中的4个,在字节8上,您将丢失2位随机性.
因此,您将获得具有122位随机性的128位值.
操作可能产生的唯一问题是,您的数据很有可能被识别为UUID.因此,如果您想将其隐藏在其他随机数据中,这将无效...
归档时间: |
|
查看次数: |
19277 次 |
最近记录: |