2016-08-04 4 views
0

NodeJs를 사용하여 코딩 된 서버 프로젝트를 Java로 코딩 된 서버 프로젝트로 마이그레이션합니다. 필자는 암호화 기술에 익숙하지 않지만 다음 명령어를 Java로 "변환"해야합니다.Java에서 고유 키 생성

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

기본적으로 노드 JS 프로젝트에 그들은 고유 키를 생성하는 JS에게 라이브러리 암호를 사용하고, 나는 자바에서, 더 적은, 더 이상, 동일한 작업을 수행 할 필요가 없을 것입니다. 여기에서 도움이 될만한 암호 지식을 가진 사람이 있습니까? Java에서 동등한 것은 무엇입니까?

감사

+0

흠, 어쩌면 SecureRandom –

답변

1

같은 것을 사용 here

+0

'Random'은 암호 학적으로 안전한 난수 바이트를 제공하지 않습니다. 대신에'SecureRandom'을 사용해야합니다. –

+0

그는 암호로 사용하지 않습니다. 그는 단지 임의의 UUID가 필요합니다. –

+0

'Random'과의 충돌이 너무 커서 결과를 "unique"라고 부를 수 없습니다. 어쨌든 ['UUID'는 내부적으로'SecureRandom'을 사용합니다.] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/UUID.java# UUID). –

1

당신은 자바에서 UUID를 사용할 수 있습니다 : 나는 https://paragonie.com/blog/2016/05/how-generate-secure-random-numbers-in-various-programming-languages있어 구글의 빠른 검색을 통해

UUID.randomUUID() 

는 모양과 귀하의 경우에 가장 가까운 일이 될 것입니다 :

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

블로그에 있습니다. 도움이 되길 바랍니다.

+0

'똑같이, 더 이상, 덜하지 않아야합니다. ' –

+0

확인 실제로 바이트 수를 전달하고 키를 생성 하시겠습니까? – Deceiver

+0

예, 이것은 고유 키를 생성합니다. 이 대답은 정확합니다. –

2

당신은 아마 당신은 전략을 사용하여 16 진수 바이트로 변환 한 후 임의의 바이트 배열을 채울하고

Random.nextBytes(byte[] bytes) 

를 사용할 수있는이

import java.util.uuid; 
... 

UUID newUUID = UUID.randomUUID(); 

String.valueOf(newUUID); 

... 
0

을 논의 할 수 사용해보기 :

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