【问题标题】:Convert der to pem through bouncy castle library通过充气城堡库将 der 转换为 pem
【发布时间】:2012-11-13 23:17:01
【问题描述】:

我找到了很多关于从 pem 转换为 der 的答案。

但是,我找不到将 der 转换为 pem 的方法。

例如以下代码生成der编码文件pkcs10.cer

public static void main(String[] args) throws Exception
{
    X509Certificate[] chain = buildChain();
    PEMWriter pemWrt = new PEMWriter(new OutputStreamWriter(System.out));
    pemWrt.writeObject(chain[0]);

    FileWriter fwO = new FileWriter("pkcs10.cer");
    fwO.write((chain[0]).toString());

    fwO.close();
    pemWrt.close();

}

喜欢, [0] 版本:3 序列号:1353995641265 IssuerDN: CN=测试证书 开始日期:2012 年 11 月 26 日星期一 21:54:01 PST 最终日期:2012 年 11 月 26 日星期一 21:54:51 PST

但是,我不知道如何从 der 文件中制作 pem 编码的认证。

【问题讨论】:

  • 这个问题似乎很困惑。如果您从给定的示例中完全删除 fwO 的东西,它将基本上留下用于以 PEM 格式将 X509Certificate 写入系统的代码。 fwO 部分不产生 DER,因为您需要调用 getEncoded 而不是 toString。

标签: java cryptography bouncycastle x509


【解决方案1】:

以下是将各种 BC 对象转换为 PEM 字符串序列化格式的方法。请注意,此代码适用于 BC 的 C# 版本,但应该毫不费力地转换为 Java 版本。

// converts bouncy castle objects of type
// X509Certificate, X509Crl, AsymmetricCipherKeyPair, AsymmetricKeyParameter,
// IX509AttributeCertificate, Pkcs10CertificationRequest, Asn1.Cms.ContentInfo 
// to PEM format string
public string ToPem(object obj)
{
    using (MemoryStream mem = new MemoryStream())
    {
        StreamWriter writer = new StreamWriter(mem);
        Org.BouncyCastle.OpenSsl.PemWriter pem = new Org.BouncyCastle.OpenSsl.PemWriter(writer);
        pem.WriteObject(obj);
        // force the pem write to flush it's data - kind of abnoxious you have to do that
        pem.Writer.Flush();
        // create a stream reader to read the data.
        StreamReader reader = new StreamReader(mem);
        mem.Position = 0;
        string pemStr = reader.ReadToEnd();
        return pemStr;
    }
}

【讨论】:

    【解决方案2】:

    我不是 Java 开发人员,因此我无法向您展示代码或指向某个类。 PEM 只是二进制 DER 的 Base64 编码,带有标准的标头和尾标。

    【讨论】:

    • 我很抱歉@owlstead。我在我的手机上,仍然不能很好地打字。只是为了老派。
    • 是的,我知道那种感觉。也许在你回家时编辑它,或者稍后再输入。我的打字相对较好,但我仍然没有发现如何快速内联代码,因为屏幕键盘上完全没有正确的字符。发帖前肯定需要重新阅读和修改。
    猜你喜欢
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 2022-10-30
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    相关资源
    最近更新 更多