当前位置: 首页 > 知识库问答 >
问题:

使用JcaPEMWriter导出PEM文件?

牟焱
2023-03-14

我试图找出如何将私钥从X509Certificate实例导出为PEM字符串编码。

import org.bouncycastle.jce.provider.BouncyCastleProvider
import org.bouncycastle.openssl.jcajce.JcaPEMWriter
import java.io.StringWriter
import java.security.KeyPairGenerator
import java.security.Security
import java.security.spec.ECGenParameterSpec


fun main(args: Array<String>) {
    Security.addProvider(BouncyCastleProvider())

    val kpGen = KeyPairGenerator.getInstance("EC", "BC")
    kpGen.initialize(ECGenParameterSpec("P-256"))

    val keyPair = kpGen.generateKeyPair()
    val cert = SelfSignedCertGenerator().generate(keyPair, "SHA512WithECDSA", "localhost", 730)
    val sw = StringWriter()

    JcaPEMWriter(sw).use { jpw ->
        jpw.writeObject(cert)
    }


    println(sw.toString())


}

输出显示预期结果:

-----BEGIN CERTIFICATE-----
MIIBcDCCARWgAwIBAgIGAYHjRWOUMAoGCCqGSM49BAMEMBQxEjAQBgNVBAMMCWxv
Y2FsaG9zdDAeFw0yMjA3MDkxNDAzMDRaFw0yNDA3MDgxNDAzMDRaMBQxEjAQBgNV
BAMMCWxvY2FsaG9zdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABF+G+CHHQ56C
AgWN2G9PUemJTNGVdefWWuPVA5Oruepm9yOM69H5tPia0V/BCDlVHQrJ8Q0yC4Fa
uuM3HP42VJ6jUzBRMB0GA1UdDgQWBBTYf15PsEN2DaNaG3YFDL84SgXZvTAfBgNV
HSMEGDAWgBTYf15PsEN2DaNaG3YFDL84SgXZvTAPBgNVHRMBAf8EBTADAQH/MAoG
CCqGSM49BAMEA0kAMEYCIQCr9MrSGW3eimfDodqC6a4nxbusOUQcFz2+DHYFrZTx
AAIhAPRJ70basMDBOBdOQnN2DgxbGSHzsixZ7qajakRTlKKz
-----END CERTIFICATE-----

问题是如何将生成的私钥导出为PEM编码?

共有1个答案

岳奇逸
2023-03-14

只需将您的私钥传递给JcaPEMWriter::WriteObject

JcaPEMWriter(sw).use {
    w -> w.writeObject(keyPair.private)
}


println(sw.toString())

其中给出:

-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIK2XWix+f1aRSh7sH4NSYQeCBsCfOBjFATKiJLnD4UPdoAoGCCqGSM49
AwEHoUQDQgAEIQAArKsROcQ8l2aZUO+a3zm+03+a9ToTrpE+Ysi9Pm5+oQoy1Oro
kLiJxihn2rgQFspUuQ0cRdwj8HKo2MsIzQ==
-----END EC PRIVATE KEY-----
 类似资料:
  • 我正在编写一个java程序,该程序应该生成私有rsa dsa ec密钥对并导出它们,程序还可以从pem文件中导入密钥。 导入密钥工作得很好,因为我已经使用bouncycastle从文件中读取对象,该文件将是并且以某种方式使用我可以读取加密的密钥。 现在的问题是,我正在尝试将私钥写到文件中,并且它应该被加密,我的问题是: 有没有方法使用类中内置的java或者使用bouncycastle或者我必须加密

  • 问题内容: 因此,我正在使用Spongy Castle(Android)为RSA公钥生成PEM编码的字符串,并将其上传到服务器。这是我目前正在做的: 现在,您可能已经知道,我不确定如何构造或是否有更简单的方法来执行此操作。 当使用Bouncy Case时,我曾经这样做过 但是由于某种原因,海绵城堡中不存在PEMWriter类 问题答案: 好的,这可能不是最聪明的方法(或者也许是?),但是在检查了此

  • 我被指派为其中一个服务器域启用HTTPS。我熟悉标准生成jks文件来生成csr,最后我将给出p7b文件。然而,服务器的IT已经给了我如下所示的证书:- D1668D336843BA22.CRT GD-G2_IIS_Intermediates.P7B D1668D336843BA22.pem “ ” 我运行了以下命令将证书附加到密钥库,但它产生了错误: 命令: keytool-importcert-

  • 我有一个JProfiler快照文件(.jps),它是使用脱机分析创建的。 当我试图使用JPexport脚本导出它时,出现以下错误: /opt/jprofiler9/bin$jpexport ~/test。jps热点~/热点。html加载/home/pavan/test。jps JProfiler尚未初始化。请先运行JProfiler可执行文件 请任何人详细说明这意味着什么,以及需要做什么才能成功地

  • 错误:正在执行热重新加载。。。正在将文件同步到IA Emulator上的设备AOSP。。。在1021ms内重新加载了707个库中的8个。I/flatter(7395):“Future”的实例E/flatter(7395):[ERROR:flatter/lib/ui/ui\u dart\u state.cc(157)]未处理的异常:FileSystemException:无法打开文件,路径=“Fut

  • 我必须创建一个aes-256密钥并将其存储在。pem文件中。我使用创建一个256位的随机密钥。在此之后,我如何将此保存到一个pem文件。我已经研究了在C和openssl pem中读写pem文件的rsa密钥。但我不使用RSA密钥。 我怀疑我的任务要简单得多,比如从base64创建pem,但没有太多帮助。