独立于私钥应该加密的事实(这与这个问题无关):我使用以下代码生成 RSA key 对:
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 没有任何构造函数/加载器或类似的东西......
最佳答案
这很令人困惑,但是要从 java Key 开始 到 字节用于存储,使用 getEncoded()方法。反之亦然,从字节到 Key ,使用KeyFactory .
如果您的 key 是私钥,则要从字节返回私钥,请创建 PKCS8EncodedKeySpec 。要从字节到 RSA公钥,请使用 X509EncodedKeySpec 。这些KeySpecs然后提供给适当的 KeyFactory 的实例恢复PublicKey和 PrivateKey对象。
关于java - 从磁盘加载存储的 RSA 公钥/私钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19366498/