2016-08-04 4 views
0

Nous migrons un projet serveur codé à l'aide de NodeJs vers un projet codé en Java. Je ne suis pas très au courant de la chose de la cryptographie mais j'ai besoin de "traduire" l'instruction suivante en Java.Générer une clé unique en Java

crypto.randomBytes(32).toString('hex'); 

En gros, dans le projet du nœud qu'ils utilisaient les js Crypto bibliothèque pour générer une clé unique, et je besoin de faire la même chose, ni plus, ni moins, en java. Toute personne ayant une connaissance de crypto qui peut aider ici? Quel serait l'équivalent en Java?

Merci

+0

Hmm, peut-être SecureRandom –

Répondre

1

Vous pouvez utiliser

Random.nextBytes(byte[] bytes) 

pour remplir un tableau d'octets aléatoire puis convertir les octets en hexadécimal en utilisant les stratégies discutées here

+0

'Random' ne fournit pas d'octets aléatoires cryptographiquement sécurisés. 'SecureRandom' devrait être utilisé à la place. –

+0

Il ne l'utilise pas pour la cryptographie. il a juste besoin d'un UUID aléatoire. –

+0

Les collisions avec 'Random' pourraient être trop élevées pour appeler le résultat" unique ". Quoi qu'il en soit, ['UUID' utilise également' SecureRandom' en interne] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/UUID.java# UUID). –

1

Vous pouvez utiliser le UUID de java:

UUID.randomUUID() 

Grâce à une recherche rapide sur Google Je suis https://paragonie.com/blog/2016/05/how-generate-secure-random-numbers-in-various-programming-languages, jetez un oeil et pour votre cas, la chose la plus proche sera:

SecureRandom csprng = new SecureRandom(); 
byte[] randomBytes = new byte[32]; 
csprng.nextBytes(randombytes); 

Ceci est dans le blog. J'espère que ça aide.

+0

'aurait besoin de faire la même chose, pas plus, pas moins ' –

+0

ok vous voulez réellement passer le nombre d'octets et générer la clé – Deceiver

+0

Oui, cela génère une clé unique. Cette réponse est correcte. –

2

Vous pouvez probablement utiliser quelque chose comme ça

import java.util.uuid; 
... 

UUID newUUID = UUID.randomUUID(); 

String.valueOf(newUUID); 

... 
0

Essayez ceci:

SecureRandom random = new SecureRandom(); 
new BigInteger(256, random).toString(32);