从磁盘加载存储的RSA公钥/私钥?

时间:2013-10-14 18:15:04

标签: java android cryptography rsa

独立于私钥应加密的事实(独立于此问题发生):我正在使用此代码生成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没有任何构造函数/加载器或类似的东西......

1 个答案:

答案 0 :(得分:2)

令人困惑,但要将一个java Key 转换为字节进行存储,请使用getEncoded()方法。换句话说,字节一个Key,使用KeyFactory

如果您的密钥是私钥,那么要将字节返回私钥创建PKCS8EncodedKeySpec。要将字节转到,RSA公钥使用X509EncodedKeySpec。然后,这些KeySpecs会提供给相应KeyFactory的实例,以恢复PublicKeyPrivateKey个对象。