web-dev-qa-db-ja.com

20のランダムバイトの配列を作成する方法は?

Javaで20のランダムバイトの配列を作成するにはどうすればよいですか?

113
novicePrgrmr

Random.nextBytes メソッドを試してください:

byte[] b = new byte[20];
new Random().nextBytes(b);
248
maerics

サードパーティのAPIを使用せずに暗号的に強力な乱数ジェネレーター(スレッドセーフ)が必要な場合は、SecureRandomを使用できます。

Java 6および7:

SecureRandom random = new SecureRandom();
byte[] bytes = new byte[20];
random.nextBytes(bytes);

Java 8(さらに安全):

byte[] bytes = new byte[20];
SecureRandom.getInstanceStrong().nextBytes(bytes);
36
DavidR

すでにApache Commons Langを使用している場合、 RandomUtils により、これは1行になります。

byte[] randomBytes = RandomUtils.nextBytes(20);
15
Duncan Jones

Java 7で導入された ThreadLocalRandom これはが現在のスレッドに分離されています

これは maericsの解 の別の表現です。

final byte[] bytes = new byte[20];
ThreadLocalRandom.current().nextBytes(bytes);
8
Jin Kwon

シードを使用してランダムオブジェクトを作成し、以下を実行して配列をランダムに取得します。

public static final int ARRAY_LENGTH = 20;

byte[] byteArray = new byte[ARRAY_LENGTH];
new Random(System.currentTimeMillis()).nextBytes(byteArray);
// get fisrt element
System.out.println("Random byte: " + byteArray[0]);