我试图了解使用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个非随机位,如果您很挑剔,则可以认为这是一个缺点。

10-07 12:34