簡體   English   中英

使用Java的securerandom獲取確定性值

[英]getting deterministic values with java's securerandom

我試圖每次都根據種子值獲得相同的鹽值。 這是我的代碼

SecureRandom sr = new SecureRandom(seed.getBytes());
byte[] salt = new byte[32];
sr.nextBytes(salt);

但是,每次運行我都會得到不同的值。 我做錯什么了嗎?

更新:

好的,我嘗試使用random而不是secureRandom並使用長種子獲取字節,但是每次我仍然獲得不同的值。 但是,當我更改它以嘗試獲取nextInt時,我能夠獲得相同的值。

Random rand = new Random(Long.parseLong(seed, 36));   
byte[] salt = new byte[32];
rand.nextBytes(salt); 

是否有辦法正確獲取相同的字節?

這是故意的。 SecureRandom嘗試使用熵來獲得真正的隨機性,這可能會很昂貴。 無論開始使用哪種鹽,它都會始終返回不同的值。

如果需要確定性值,請改用Random。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM