C# Can';t读取带有BouncyCastle的GOST2012键

C# Can';t读取带有BouncyCastle的GOST2012键,c#,cryptography,bouncycastle,gost3410,C#,Cryptography,Bouncycastle,Gost3410,我们有私钥(GOST3410-2012)。 但我们无法使用BouncyCastle 1.8.6.1读取它 以下是一个关键数据: -----开始私钥----- MIGiAgEAMCEGCCqFAwcBAQECMBUGCSqFAwcBAgECAQYIKoUDBwEBAgMEQIXnWrZ6 ajvbCU6x9jK49PgQqCP00T/LW3LAXXXUEMF8X4Q1Y3N9ZFOJT2S/IgyPJVrUhgtO 1Akp+Roh8bCPPlqgODA2BggqhQMCCQMIATEqBCi72

我们有私钥(GOST3410-2012)。 但我们无法使用BouncyCastle 1.8.6.1读取它

以下是一个关键数据:

-----开始私钥----- MIGiAgEAMCEGCCqFAwcBAQECMBUGCSqFAwcBAgECAQYIKoUDBwEBAgMEQIXnWrZ6 ajvbCU6x9jK49PgQqCP00T/LW3LAXXXUEMF8X4Q1Y3N9ZFOJT2S/IgyPJVrUhgtO 1Akp+Roh8bCPPlqgODA2BggqhQMCCQMIATEqBCi72ZvrBVW6mFL/bQeXeMTf8Jh8 p/diI7Cg8ig4mXg3tsIUf4vBi61b -----结束私钥-----

下面是一个代码来读取它:

        const string keyPath = "D:\\testkey\\priv.key";
        using (var textReader = File.OpenText(keyPath))
        {
            var pemReader = new Org.BouncyCastle.OpenSsl.PemReader(textReader);
            var pemObj = pemReader.ReadPemObject();
            var seq = (Asn1Sequence)Asn1Object.FromByteArray(pemObj.Content);
            var keyInfo = PrivateKeyInfo.GetInstance(seq);
            var akp = Org.BouncyCastle.Security.PrivateKeyFactory.CreateKey(keyInfo);
        }
此代码提供异常:“DER长度超过4字节:103”。
有人知道如何读取吗?

如果您使用OpenSSL生成密钥,请尝试在OpennSSL配置文件的“gost_部分”中添加以下参数:

GOST_PK_FORMAT = LEGACY_PK_WRAP

然后再次导出密钥

我不是GOST密钥专家,但ASN.1数据结构似乎很好:您安装了什么加密服务提供商?默认情况下不支持GOST算法。请检查此项,我们已安装cryptopro csp。此外,您可以探索此提交