我试图了解使用UUID.randomUUID()优于SecureRandom生成器的优势,因为前者在内部使用securerandom。
最佳答案
好吧,source code显示 UUID.randomUUID
使用 SecureRandom
。
public static UUID [More ...] 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);
}
如您所见,您可以使用其中任何一个,但是在安全的UUID中,您有6个非随机位,如果您很挑剔,则可以认为这是一个缺点。