我已经编写了生成密钥对的代码,但想知道是否有任何方法可以保存并重新使用它们?如何在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