1

独立于应该加密私钥的事实(独立于这个问题发生):我正在使用此代码生成 RSA 密钥对:

KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");

kpg.initialize(2048);
KeyPair keyPair = kpg.generateKeyPair();
privKey = (RSAPrivateKey)keyPair.getPrivate();
pubKey = (RSAPublicKey)keyPair.getPublic();     
byte[] data=privKey.getEncoded();
...
byte[] data=pupKey.getEncoded();

数据的内容是二进制的,而不是 Base 64 编码的或类似的东西。

当我将数据内容存储在某处并想稍后加载它们时 - 我该怎么做?RSAPrivateKey 和 RSAPublicKey 没有任何构造函数/加载器或类似的东西......

4

1 回答 1

3

这很令人困惑,但是要从java密钥 字节进行存储,请使用getEncoded()方法。反过来,字节Key,使用KeyFactory

如果您的密钥是私钥,则要从字节返回私钥,请创建一个PKCS8EncodedKeySpec。要从字节RSA 公钥,请使用X509EncodedKeySpec。然后将这些KeySpec提供给适当的KeyFactory的实例以恢复PublicKeyPrivateKey对象。

于 2013-10-14T19:08:26.517 回答