我試圖實現一個變異的加密算法(理論上由我開發)和作爲需求的一部分,我需要生成一個RSA密鑰對並將其存儲在數據庫中,以便稍後可以將其作爲加密的一部分進行檢索進程(僅用於加密會話密鑰,以便可以使用加密的消息安全發送)。如何創建一個RSA密鑰對,以便它可以存儲在數據庫中?
我試圖生成一個RSA密鑰對似乎可以工作,但它會一直重複生成相同的值,而不是每次運行代碼時都給出新的對。我做錯了什麼? 如果這些值依賴於機器本身(因此顯示相同的值),那麼有沒有辦法將密鑰對生成鏈接到提供的電子郵件地址,以便每當輸入新的電子郵件地址時,不同的RSA密鑰對輸出?
下面的代碼是我嘗試生成密鑰對
import java.security.*;
import java.security.*;
/**
* @author Speedy gonzales
*/
public class test {
public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchProviderException {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
byte[] publicKey = keyGen.genKeyPair().getPublic().getEncoded();
StringBuffer retString1 = new StringBuffer();
retString1.append("[");
for (int puk = 0; puk < publicKey.length; ++puk) {
retString1.append(publicKey[puk]);
// retString1.append(", ");
}
retString1 = retString1.delete(retString1.length()-2,retString1.length());
retString1.append("]");
System.out.println(retString1);
byte[] privateKey = keyGen.genKeyPair().getPrivate().getEncoded();
StringBuffer retString2 = new StringBuffer();
retString2.append("[");
for (int pri = 0; pri < privateKey.length; ++pri) {
retString2.append(privateKey[pri]);
// retString2.append(", ");
}
retString2 = retString2.delete(retString2.length()-2,retString2.length());
retString2.append("]");
System.out.println(retString2);
}
}
感謝
我所知道的關於編寫加密算法的知識是,除非你是一位密碼數學天才,否則你不應該嘗試它。 – Bobulous 2012-08-13 18:25:16
@ user1515834:這不是他要求的。堅持提供的問題。 – Wug 2012-08-13 18:28:35
我對這個特定的實現並不瞭解,但是如果每次運行都得到相同的結果,我的第一個停靠點就是檢查rng種子。 – Charles 2012-08-13 18:35:17