【发布时间】:2017-10-18 11:52:11
【问题描述】:
我编写了生成密钥对的代码,但想知道是否有任何方法可以保存和重复使用它们?
这是生成该对的代码:
public static void main(String[] 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;
}
【问题讨论】:
-
当然。只是以某种方式保留数据。在程序的生命周期内,只保留引用。在程序的生命周期之外 - 好吧,它们是可序列化的,所以序列化它们。 (当然,您必须担心安全地保存序列化密钥......)
-
旁白:既然可以返回
KeyPair对象,为什么还要将它们放入 Map 中? -
谢谢安迪,要怎么做呢?
-
使用您最喜欢的搜索引擎查找有关序列化的教程。
-
将它们保存在 KeyStore 中。这就是它的用途。
标签: java rsa encryption-asymmetric