我需要/想獲得隨機的(當然,不是全部)的數字,使用密碼的產生。一致的隨機數和平臺
我在做什麼:目前我正在生成他們SecureRandom。
我獲得與
SecureRandom sec = SecureRandom.getInstance("SHA1PRNG", "SUN");
對象,然後播種它像這樣
sec.setSeed(seed);
目標:A(優選快)的方法來創建的隨機數,這是加密至少一個安全作爲SHA1PRNG SecureRandom實現。這些需要在不同版本的JRE和Android上相同。
編輯:種子從用戶輸入產生。
問題:隨着SecureRandom.getInstance("SHA1PRNG", "SUN");
它不能是這樣的: java.security.NoSuchProviderException: SUN
。省略, "SUN"
產生隨機數,但是那些比默認(JRE 7)編號不同。
問題:我該如何實現我的目標?
你不希望它是可預測的:我想,因爲我需要的可預測性,以便相同的先決條件產生相同的輸出。如果他們是不一樣的,它的不可能硬做用戶從應用程序所期待的。編輯:通過可預測的我的意思是,當知道單個字節(或一百)你不應該能夠預測下一個,但是當你知道種子,你應該能夠預測第一個(和所有其他)。也許另一個字是可重現。
如果有人的更直觀的方式知道,請告訴我!
它們都是可預測的,或者它們不是。如果你希望他們是可預測的,使用相同的種子。但只要共享種子,攻擊者就有辦法獲得它。 – etienne 2013-04-09 15:46:45
種子不共享,我不知道它,只有用戶知道它。所以如果用戶輸入相同的種子,則應該輸出相同的隨機數。 – tilpner 2013-04-09 15:50:50
哦,對。然後嘗試使用'SecureRandom sec = SecureRandom。getInstance(「SHA1PRNG」);'檢查它是否在Android和標準JVM上輸出相同的結果 – etienne 2013-04-09 15:53:58