如何在 Java 中将 PKCS#8 编码的 RSA 密钥转换为 PKCS#1?

发布于 2024-10-21 13:45:15 字数 79 浏览 3 评论 0原文

是否可以将 PKCS#8 编码的 RSA 私钥转换为 PKCS#1? 我知道这可以通过 openssl 轻松完成,但是可以用 Java 完成吗?

Is it possible to convert a PKCS#8 encoded RSA private key into PKCS#1?
I know this can be done easily via openssl, but can it be done in Java?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

别闹i 2024-10-28 13:45:15

使用 BouncyCastle 1.50

PrivateKeyInfo pkInfo = PrivateKeyInfo.getInstance(pkPair.getPrivateKey().getEncodedKey());
ASN1Encodable privateKeyPKCS1ASN1Encodable = pkInfo.parsePrivateKey();
ASN1Primitive privateKeyPKCS1ASN1 = privateKeyPKCS1ASN1Encodable.toASN1Primitive();

byte[] privateKeyPKCS1 = privateKeyPKCS1ASN1.getEncoded();

Use BouncyCastle 1.50

PrivateKeyInfo pkInfo = PrivateKeyInfo.getInstance(pkPair.getPrivateKey().getEncodedKey());
ASN1Encodable privateKeyPKCS1ASN1Encodable = pkInfo.parsePrivateKey();
ASN1Primitive privateKeyPKCS1ASN1 = privateKeyPKCS1ASN1Encodable.toASN1Primitive();

byte[] privateKeyPKCS1 = privateKeyPKCS1ASN1.getEncoded();
司马昭之心 2024-10-28 13:45:15

KeyFactoryPKCS8EncodedKeySpec(算法 "RSA")结合使用,将 PKCS #8 编码的私钥字节转换为 Java 对象。

CipherSecretKeyFactory(算法 "PBEWithMD5AndDES")与 PBEKeySpecPBEParameterSpec 结合使用创建 PKCS #5 编码的东西。

Use KeyFactory with PKCS8EncodedKeySpec (algorithm "RSA") to convert the PKCS #8 encoded private key bytes into Java objects.

Use Cipher and SecretKeyFactory (algorithm "PBEWithMD5AndDES") with PBEKeySpec, and PBEParameterSpec to create PKCS #5 encoded stuff.

柒七 2024-10-28 13:45:15

还可以使用 BouncyCastle

 public static String convertPkcs8To1(String content, String privateKey, String charset) throws Exception {
    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    PrivateKey priKey = keyFactory.generatePrivate(new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKey.getBytes())));
    PrivateKeyInfo pkInfo = PrivateKeyInfo.getInstance(priKey.getEncoded());
    ASN1Encodable privateKeyPKCS1ASN1Encodable = pkInfo.parsePrivateKey();
    ASN1Primitive privateKeyPKCS1ASN1 = privateKeyPKCS1ASN1Encodable.toASN1Primitive();

    byte[] privateKeyPKCS1 = privateKeyPKCS1ASN1.getEncoded();

    System.out.println(Base64.encodeBase64String(privateKeyPKCS1));
}

also use BouncyCastle

 public static String convertPkcs8To1(String content, String privateKey, String charset) throws Exception {
    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    PrivateKey priKey = keyFactory.generatePrivate(new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKey.getBytes())));
    PrivateKeyInfo pkInfo = PrivateKeyInfo.getInstance(priKey.getEncoded());
    ASN1Encodable privateKeyPKCS1ASN1Encodable = pkInfo.parsePrivateKey();
    ASN1Primitive privateKeyPKCS1ASN1 = privateKeyPKCS1ASN1Encodable.toASN1Primitive();

    byte[] privateKeyPKCS1 = privateKeyPKCS1ASN1.getEncoded();

    System.out.println(Base64.encodeBase64String(privateKeyPKCS1));
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文