【问题标题】:Can't read GOST2012 key with BouncyCastle无法使用 BouncyCastle 读取 GOST2012 密钥
【发布时间】:2020-04-22 11:37:55
【问题描述】:

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

这是一个关键数据:

-----开始私钥----- MIGiAgEAMCEGCCqFAwcBAQECMBUGCSqFAwcBAgECAQYIKoUDBwEBAgMEQIXnWrZ6 ajvbCU6x9jK49PgQqCP00T/lW3laXCXueMF8X4Q1y3N9zfOJT2s/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”。 有人知道怎么读吗?

【问题讨论】:

  • 我不是 GOST 密钥专家,但 ASN.1 数据结构似乎还不错:ASN.1 decoded version of your sample key
  • 您安装了哪些加密服务提供程序?默认不支持 GOST 算法。
  • 也可以查看one
  • 我们已经安装了 cryptopro csp

标签: c# cryptography bouncycastle gost3410


【解决方案1】:

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

GOST_PK_FORMAT = LEGACY_PK_WRAP

然后再次导出密钥

【讨论】:

猜你喜欢
  • 2014-05-20
  • 2013-03-17
  • 2015-06-18
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
  • 1970-01-01
相关资源
最近更新 更多