我試圖在Android上使用Java確定性地生成RSA密鑰對。我的要求是,我不能存儲密鑰對,並且它必須在運行時生成,與之前/未來的運行相同。確定性生成RSA加密密鑰對
我的過程是,我會確定性地播種一個隨機數字生成器並傳遞該生成器以創建密鑰。我的代碼是:
SecureRandom random=SecureRandom.getInstance("SHA1PRNG");
random.setSeed(1234); //something device specific will be used to set this
KeyPairGenerator keyGen=KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024, random);
KeyPair pair=keyGen.generateKeyPair();
PublicKey pub=pair.getPublic();
PrivateKey priv=pair.getPrivate();
生成的密鑰與運行不同。但是,從運行到運行SecureRandom數字是相同的,甚至在不同設備上相同。
我錯過了什麼?我怎樣才能重複生成這些密鑰?
謝謝
你爲什麼要這樣做?當然,如果你不想存儲RSA密鑰對,那麼你也不想存儲用來生成RSA對的隨機種子?奇怪的是,這段代碼並沒有按照你想要的那樣做,但對我來說,似乎你可能會這樣做,而沒有想到它通過 – 2012-04-16 06:00:09