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

标签 java android cryptography rsa

独立于私钥应该加密的事实(这与这个问题无关):我使用以下代码生成 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 的实例恢复PublicKeyPrivateKey对象。

关于java - 从磁盘加载存储的 RSA 公钥/私钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19366498/

相关文章:

java - 哪里需要同步?

java - 如何将对象作为可比参数发送给方法?

javascript - 使用纬度和经度从链接启动谷歌地图方向的网络应用程序

android - 工具栏中的自定义布局,下方带有 TabLayout

security - 数字签名 VS.信息摘要

java - Java 中的可点击图像

java - 将Java中不同类型的HashMap组合成通用的HashMap

java - Android Sharedpreferences 未提交

cryptography - Json web token 可以用公钥签名吗?

php - 使用 OpenSSL/C++ 和 PHP/Mcrypt : the 1st block is decrypted only 的 AES-128-CBC 加密