【问题标题】:Convert DSA asymmetric key in .NET XML format to PEM format将 .NET XML 格式的 DSA 非对称密钥转换为 PEM 格式
【发布时间】:2010-07-26 19:10:49
【问题描述】:

我有一个使用DSACryptoServiceProvider.ToXmlString 导出的DSA 私钥,我需要将其转换为PEM 格式(“file.pem”),以便在PHP 使用 openssl_pkey_get_private 函数。

我该如何做到这一点?

解决方法可以使用DSACryptoServiceProvider.ExportCspBlob方法,如果有帮助的话,我只需要转换密钥。

【问题讨论】:

    标签: c# php .net cryptography openssl


    【解决方案1】:

    使用 bouncycastle C# 库类DotNetUtilities,相当容易。

    DSACryptoServiceProvider dsa = new DSACryptoServiceProvider(1024);
    AsymmetricCipherKeyPair dsaKey = DotNetUtilities.GetDsaKeyPair(dsa);
    using (StreamWriter sw = new StreamWriter("dsa.pem"))
    {
        PemWriter pw = new PemWriter(sw);
        pw.WriteObject(dsaKey);
    }
    

    【讨论】:

    • +1,我很惊讶没有直接的方法可以仅使用纯 .NET 框架来做到这一点(没有额外的外部库)。
    • 好吧,PEM 格式并不是真正的标准,而是事实上的标准。
    • 使用 .NET 4.5 和来自 NuGet (1.7.0) 的最新 BouncyCastle 运行此确切代码,调用 pw.WriteObject(dsaKey) 时出现 StackOverflowException。我也尝试使用 .NET 3.0、3.5 和 4.0,同样的问题。有什么想法有什么问题吗?
    • 解决方案:恢复到 1.6.1 版本。不再有 StackOverflowException。
    • @Oran:在 bouncycastle.org 提交错误报告。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2010-10-13
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多