C# Can';t读取带有BouncyCastle的GOST2012键
我们有私钥(GOST3410-2012)。 但我们无法使用BouncyCastle 1.8.6.1读取它 以下是一个关键数据: -----开始私钥----- MIGiAgEAMCEGCCqFAwcBAQECMBUGCSqFAwcBAgECAQYIKoUDBwEBAgMEQIXnWrZ6 ajvbCU6x9jK49PgQqCP00T/LW3LAXXXUEMF8X4Q1Y3N9ZFOJT2S/IgyPJVrUhgtO 1Akp+Roh8bCPPlqgODA2BggqhQMCCQMIATEqBCi72ZvrBVW6mFL/bQeXeMTf8Jh8 p/diI7Cg8ig4mXg3tsIUf4vBi61b -----结束私钥----- 下面是一个代码来读取它: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
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。此外,您可以探索此提交