2

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

这是一个关键数据:

-----BEGIN PRIVATE KEY----- MIGiAgEAMCEGCCqFAwcBAQECMBUGCSqFAwcBAgECAQYIKoUDBwEBAgMEQIXnWrZ6 ajvbCU6x9jK49PgQqCP00T/lW3laXCXueMF8X4Q1y3N9zfOJT2s/IgyPJVrUhgtO 1Akp+Roh8bCPPlqgODA2BggqhQMCCQMIATEqBCi72ZvrBVW6mFL/bQeXeMTf8Jh8 p/diI7Cg8ig4mXg3tsIUf4vBi61b -----END PRIVATE KEY-----

这是一个阅读它的代码:

        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”。有谁知道怎么读?

4

1 回答 1

1

如果您使用 OpenSSL 创建密钥,请尝试在 OpennSSL 配置文件的“gost_section”中添加以下参数:

GOST_PK_FORMAT = LEGACY_PK_WRAP

然后再次导出密钥

于 2020-05-08T19:17:01.687 回答