Comment créer un tableau de 20 octets aléatoires en Java?
130
Essayez la Random.nextBytes
méthode:
byte[] b = new byte[20];
new Random().nextBytes(b);
Si vous voulez un générateur de nombres aléatoires cryptographiquement fort (également thread-safe) sans utiliser une API tierce, vous pouvez utiliser SecureRandom
.
Java 6 et 7:
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[20];
random.nextBytes(bytes);
Java 8 (encore plus sécurisé):
byte[] bytes = new byte[20];
SecureRandom.getInstanceStrong().nextBytes(bytes);
Si vous utilisez déjà Apache Commons Lang, RandomUtils
cela en fait un one-liner:
byte[] randomBytes = RandomUtils.nextBytes(20);
Java 7 a introduit ThreadLocalRandom qui est isolé du thread actuel .
Ceci est une autre interprétation de la solution de maerics .
la source
ThreadLocalRandom
? Mieux:ThreadLocalRandom.current().nextBytes(bytes);
Créez un objet Random avec une graine et obtenez le tableau au hasard en faisant:
la source
Pour ceux qui veulent un moyen plus sûr de créer un tableau d'octets aléatoires, oui, le moyen le plus sûr est:
MAIS vos threads peuvent se bloquer s'il n'y a pas assez d'aléa disponible sur la machine, en fonction de votre système d'exploitation. La solution suivante ne bloquera pas:
C'est parce que le premier exemple utilise
/dev/random
et bloquera en attendant plus de hasard (généré par une souris / clavier et d'autres sources). Le deuxième exemple utilise/dev/urandom
qui ne bloquera pas.la source