如何创建一个包含20个随机字节的数组?

nov*_*rmr 118 java arrays random

如何在Java中创建一个包含20个随机字节的数组?

mae*_*ics 256

尝试Random.nextBytes方法:

byte[] b = new byte[20];
new Random().nextBytes(b);
Run Code Online (Sandbox Code Playgroud)

  • 值得补充的是,这不是加密安全的。如果您需要的话,请参阅[其他答案](/sf/answers/2443881751/)。 (2认同)

Dav*_*idR 37

如果您想要一个加密强大的随机数生成器(也是线程安全的)而不使用第三方API,您可以使用SecureRandom.

Java 6&7:

SecureRandom random = new SecureRandom();
byte[] bytes = new byte[20];
random.nextBytes(bytes);
Run Code Online (Sandbox Code Playgroud)

Java 8(更安全):

byte[] bytes = new byte[20];
SecureRandom.getInstanceStrong().nextBytes(bytes);
Run Code Online (Sandbox Code Playgroud)


Dun*_*nes 15

如果你已经在使用Apache Commons Lang,那么 RandomUtils 这就是一个单行:

byte[] randomBytes = RandomUtils.nextBytes(20);
Run Code Online (Sandbox Code Playgroud)

  • 在进行一些挖掘之后,RandomUtils使用了引擎盖下的Math.random(),而不是SecureRandom.只是想明确这一点. (6认同)

Jin*_*won 8

Java 7引入了ThreadLocalRandom,它与当前线程隔离.

这是maerics解决方案的另一个演绎.

final byte[] bytes = new byte[20];
ThreadLocalRandom.current().nextBytes(bytes);
Run Code Online (Sandbox Code Playgroud)

  • 也许“ThreadLocalRandom”这个词后面的括号太多了?更好:`ThreadLocalRandom.current().nextBytes(bytes);` (2认同)