J'ai écrit du code qui génère les paires de clés, mais je me demandais s'il y avait un moyen de les enregistrer et de les réutiliser?Comment enregistrer et réutiliser les paires de clés dans le cryptage asymétrique Java?
Voici le code qui generaes la paire:
public static void main (String [] args) throws Exception {
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;
}
Bien sûr. Gardez simplement les données en quelque sorte. Dans la vie du programme, gardez simplement les références. En dehors de la durée de vie du programme - bien, ils sont sérialisables, alors sérialisez-les. (Bien sûr, vous devez vous soucier de garder les clés sérialisées en toute sécurité ...) –
A part: pourquoi les mettre dans une carte quand vous pouvez simplement retourner l'objet 'KeyPair'? –
Merci Andy, comment on va faire ça? – TheRealJoeWilson