zoukankan      html  css  js  c++  java
  • C#.NET 读取PFX私钥证书并导出PEM格式私钥

    项目nuget引用 BouncyCastle。

    读取证书

    X509Certificate2 x509 = new X509Certificate2(lblPfxPath.Text, txtPfxPwd.Text.Trim(), X509KeyStorageFlags.Exportable);
                    //x509.PrivateKey.ToXmlString(true);//xml格式私钥 
                    txtPemPrivateKey.Text = xmlToPem((RSACryptoServiceProvider)x509.PrivateKey);

    转成PEM私钥。

    public string xmlToPem(RSACryptoServiceProvider rsa2)
            {
                string priKey = null;
                var p = rsa2.ExportParameters(true);
    
                var key = new RsaPrivateCrtKeyParameters(
                    new BigInteger(1, p.Modulus), new BigInteger(1, p.Exponent), new BigInteger(1, p.D),
                    new BigInteger(1, p.P), new BigInteger(1, p.Q), new BigInteger(1, p.DP), new BigInteger(1, p.DQ),
                    new BigInteger(1, p.InverseQ));
    
                using (TextWriter sw = new StringWriter())
                {
                    var pemWriter = new Org.BouncyCastle.OpenSsl.PemWriter(sw);
                    pemWriter.WriteObject(key);
                    pemWriter.Writer.Flush();
                    priKey = sw.ToString();
                }
    
                return priKey;
            }

    xml格式的直接:x509.PrivateKey.ToXmlString(true);

  • 相关阅读:
    班课6
    lesson one
    班课5
    ES6之Proxy及Proxy内置方法
    ES6模板字符串
    ES6之Symbol
    ES6对象及ES6对象简单拓展
    ES6函数的拓展
    ES6数组及数组方法
    ES6字符串方法
  • 原文地址:https://www.cnblogs.com/runliuv/p/14959732.html
Copyright © 2011-2022 走看看