1

我正在使用以下代码在 .Net 中使用“Org.BouncyCastle.Crypto”获取私钥

        FileStream keyFileStream = File.OpenRead(FileName);
        char[] pwd = Password.ToCharArray();
        Org.BouncyCastle.Pkcs.Pkcs12Store store = new Org.BouncyCastle.Pkcs.Pkcs12Store(keyFileStream, pwd);

        System.Collections.IEnumerator h = store.Aliases.GetEnumerator();
        h.MoveNext();
        object o = h.Current;
        string alias = o.ToString();

        Org.BouncyCastle.Pkcs.AsymmetricKeyEntry privAsymKey = store.GetKey(alias);// as RsaKeyParameters;
        RsaKeyParameters privRSAKey = (RsaKeyParameters)privAsymKey.Key;

但我得到“privAsymKey”为空

我厌倦了使用 OpenSSl 获取私钥的手动方法,我可以获得私钥,这意味着 .p12 文件是正确的。

谁能帮我解决从 .p12 文件中获取私钥的确切位置

4

1 回答 1

1

经过太多的谷歌搜索,我发现以下代码可以帮助我使用 Org.BouncyCastle.Crypto 从 .p12 文件中获取私钥

//This is the function call
 AsymmetricKeyParameter privateKey = TransformRSAPrivateKey(Certi.PrivateKey);

//这是返回Privatekey的函数的定义

 RSACryptoServiceProvider prov = privateKey as RSACryptoServiceProvider;
        RSAParameters parameters = prov.ExportParameters(true);

        return new RsaPrivateCrtKeyParameters(
            new BigInteger(1, parameters.Modulus),
            new BigInteger(1, parameters.Exponent),
            new BigInteger(1, parameters.D),
            new BigInteger(1, parameters.P),
            new BigInteger(1, parameters.Q),
            new BigInteger(1, parameters.DP),
            new BigInteger(1, parameters.DQ),
            new BigInteger(1, parameters.InverseQ));
于 2013-06-04T06:33:28.433 回答