Bagaimana saya bisa membuat larik 20 byte acak di Jawa?
130
Coba Random.nextBytes
caranya:
byte[] b = new byte[20];
new Random().nextBytes(b);
Jika Anda ingin generator nomor acak yang kuat secara kriptografis (juga aman untuk thread) tanpa menggunakan API pihak ketiga, Anda dapat menggunakannya SecureRandom
.
Java 6 & 7:
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[20];
random.nextBytes(bytes);
Java 8 (bahkan lebih aman):
byte[] bytes = new byte[20];
SecureRandom.getInstanceStrong().nextBytes(bytes);
Jika Anda sudah menggunakan Apache Commons Lang, RandomUtils
buat ini menjadi satu-baris:
byte[] randomBytes = RandomUtils.nextBytes(20);
Java 7 memperkenalkan ThreadLocalRandom yang terisolasi ke utas saat ini .
Ini adalah terjemahan lain dari solusi maerics .
sumber
ThreadLocalRandom
? Lebih baik:ThreadLocalRandom.current().nextBytes(bytes);
Buat objek acak dengan seed dan dapatkan array acak dengan melakukan:
sumber
Bagi mereka yang menginginkan cara yang lebih aman untuk membuat array byte acak, ya cara yang paling aman adalah:
TETAPI utas Anda mungkin memblokir jika tidak ada cukup keacakan pada mesin, tergantung pada OS Anda. Solusi berikut tidak akan memblokir:
Ini karena contoh pertama menggunakan
/dev/random
dan akan memblokir sambil menunggu lebih banyak keacakan (dihasilkan oleh mouse / keyboard dan sumber lainnya). Contoh kedua menggunakan/dev/urandom
yang tidak akan diblokir.sumber