独立于私钥应加密的事实(独立于此问题发生):我正在使用此代码生成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没有任何构造函数/加载器或类似的东西......
答案 0 :(得分:2)
令人困惑,但要将从一个java Key 转换为字节进行存储,请使用getEncoded()方法。换句话说,从字节到一个Key,使用KeyFactory。
如果您的密钥是私钥,那么要将从字节返回到私钥创建PKCS8EncodedKeySpec。要将从字节转到,RSA公钥使用X509EncodedKeySpec。然后,这些KeySpecs会提供给相应KeyFactory的实例,以恢复PublicKey和PrivateKey个对象。