java - 如何将 Byte 数组转换为 PrivateKey 或 PublicKey 类型?

标签 java cryptography private-key public-key jce

我正在使用 RSA 算法生成公钥和私钥

final KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM);
keyGen.initialize(1024);
final KeyPair key = keyGen.generateKeyPair();
final PrivateKey privateKey=key.getPrivate();
final PublicKey publickey=key.getPublic();

之后,这些 key 使用 Base64 编码器进行编码并将其保存到数据库中。

如何在java中将此编码的字符串转换为私钥和公钥类型是解密文件。 使用 Base64Decoder 解码此字符串时,将得到一个字节数组。如何将此字节数组转换为公钥或私钥类型?

最佳答案

如果您有一个 byte[] 表示键上 getEncoded() 的输出,则可以使用 KeyFactory 将其转回 PublicKey 对象或 PrivateKey 对象。

byte[] privateKeyBytes;
byte[] publicKeyBytes;
KeyFactory kf = KeyFactory.getInstance("RSA"); // or "EC" or whatever
PrivateKey privateKey = kf.generatePrivate(new PKCS8EncodedKeySpec(privateKeyBytes));
PublicKey publicKey = kf.generatePublic(new X509EncodedKeySpec(publicKeyBytes));

关于java - 如何将 Byte 数组转换为 PrivateKey 或 PublicKey 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19353748/

相关文章:

java - 将 modena.css 与 JavaFX 和 Java 7 结合使用

java - 将棋盘坐标显示为 ASCII 棋盘

java - 带有推土机的 map 列表

c++ - 如何在crypto++中找到椭圆曲线的一个点(给定x)?或者如何计算有限域中的根?还是多项式环的根?

java - 使用加密文件并为它们提供 FileProvider

c# - SSH.NET Authenticate via private key only (公钥认证)

java - Java运行时需要判断对象的类型。设计不好?

sql-server - 如何在一台 SQL Server 上加密并在另一台 SQL Server 上解密?

encryption - RSA 私钥的哪些部分是保密的?

java - 从 Java BouncyCaSTLe 输出加密的 PK8 私钥