4

这是我的代码

  KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
     KeyPair myPair = kpg.generateKeyPair();
     PrivateKey k = myPair.getPrivate();
     System.out.print(k.serialVersionUID);

     Cipher c = Cipher.getInstance("RSA");
     c.init(Cipher.ENCRYPT_MODE, myPair.getPublic());
     String myMessage = new String("Testing the message");

     byte[] bytes  = c.doFinal(myMessage.getBytes());
     String tt = new String(bytes);
     System.out.println(tt);
     Cipher d = Cipher.getInstance("RSA");
     d.init(Cipher.DECRYPT_MODE, myPair.getPrivate());
     byte[] temp = d.doFinal(bytes);
     String tst = new String(temp);
     System.out.println(tst);

我的问题是如何获取公钥并存储在其他地方

4

1 回答 1

4
PublicKey pubKey = myPair.getPublic();
byte[] keyBytes = pubKey.getEncoded();

将 keyBytes 保存为二进制文件或将其存储在某处。

这样做以重建密钥,

 KeyFactory keyFactory = KeyFactory.getInstance("RSA");
 X509EncodedKeySpec pubKeySpec 
     = new X509EncodedKeySpec(keyBytes);
 PublicKey pubKey = keyFactory.generatePublic(pubKeySpec);
于 2010-05-06T23:38:44.193 回答