2016-07-12 84 views
-8

我想生成一個有64位熵的令牌,請分享你的想法,我該如何實現這一點?如何在Java中生成64位熵令牌

謝謝

+0

你的意思['Random.nextLong()'](https://docs.oracle.com/javase/8 /docs/api/java/util/Random.html#nextLong--),或者它是更隨機的堂兄['SecureRandom'](https://docs.oracle.com/javase/8/docs/api/java/security /SecureRandom.html)? – Andreas

+0

我正在使用令牌基礎會話身份驗證,但我生成隨機字符串,但它沒有通過安全掃描測試,他們建議我生成64位熵令牌 – Yougesh

+0

是的,我認爲它會工作,謝謝 – Yougesh

回答

3

您可以使用此java.security.SecureRandom.nextBytes(byte[])應該給你任何你需要的字節長度安全的隨機數。

+0

我需要隨機字符串令牌,您可以在此網站上測試生成的令牌https://apps.cygnius.net/passtest/ 還檢查破解時間 – Yougesh

+0

感謝您的建議 – Yougesh

2

這將生成一個包含15個ASCII字符的隨機字符串,不包括空格。

Random rnd = new Random(); 
char[] buf = new char[15]; 
for (int i = 0; i < buf.length; i++) 
    buf[i] = (char)(33 + rnd.nextInt(127 - 33)); 
System.out.println(buf); 

樣本輸出(有根據https://apps.cygnius.net/passtest/熵)

E%`}%/1sj\a*c6R  entropy: 82.353 
e.vu{c#l0<kLVSv  entropy: 76.322 
M-VyT?lS~mfv?KR  entropy: 87.385 
/:qW8;GnG4g`DgU  entropy: 91.172 
_:NIvU5HdLS/2[b  entropy: 83.262 
(mv/*i9<lG:L#Z:  entropy: 89.5 
mwao4,H~3'kxhTM  entropy: 86.711 
?|a<(Ulm/D-:j_f  entropy: 82.091 
4.^7u_T"Xk{}([>  entropy: 83.459 
(fd?X4usO7No$m_  entropy: 73.448