我已經編寫了生成密鑰對的代碼,但想知道是否有任何方法可以保存並重新使用它們?如何在Java非對稱加密中保存和重用密鑰對?
下面是generaes該對代碼:
公共靜態無效的主要(字串[] args)拋出異常{
String plainText = "Hello world";
Map<String, Object> keys = getRSAKeys();
PrivateKey privateKey = (PrivateKey) keys.get("private");
PublicKey publicKey = (PublicKey) keys.get("public");
System.out.println(privateKey.getEncoded());
System.out.println(publicKey.getEncoded());
String encrypted = encryptMessage(plainText, privateKey);
System.out.println(encrypted);
String decrypted = decryptMessage(plainText, publicKey, encrypted);
System.out.println(decrypted);
}
private static Map<String, Object> getRSAKeys() throws Exception {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();
Map<String, Object> keys = new HashMap<String, Object>();
keys.put("private", privateKey);
keys.put("public", publicKey);
return keys;
}
肯定。只是保持數據。在程序的整個生命週期內,只保留參考。在程序的生命週期之外 - 它們是可序列化的,所以序列化它們。 (當然,你必須考慮保持序列化密鑰的安全......) –
另外:爲什麼把它們放到一個Map中,只要返回'KeyPair'對象? –
謝謝安迪,你會怎麼做呢? – TheRealJoeWilson