Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将导出的CngKey导入RSA并再次导出_C#_.net_Cryptography_Cng - Fatal编程技术网

C# 将导出的CngKey导入RSA并再次导出

C# 将导出的CngKey导入RSA并再次导出,c#,.net,cryptography,cng,C#,.net,Cryptography,Cng,我以CngKeyBlobFormat.Pkcs8PrivateBlob格式导出密钥,然后尝试将此信息导入新的CngKey,然后再次尝试导出新密钥。问题是,当您使用CngKey.import()简单地导入一个键时,您不能选择参数,也不能选择键的名称,因此我不能再次导出它,因为默认参数不允许您这样做。因此,我编写了以下代码: // Import key into RSACng rsa var key = rsa.Key.Export(CngKeyBlobFormat.Pkcs8PrivateBlob

我以
CngKeyBlobFormat.Pkcs8PrivateBlob
格式导出密钥,然后尝试将此信息导入新的CngKey,然后再次尝试导出新密钥。问题是,当您使用
CngKey.import()
简单地导入一个键时,您不能选择参数,也不能选择键的名称,因此我不能再次导出它,因为默认参数不允许您这样做。因此,我编写了以下代码:

// Import key into RSACng rsa
var key = rsa.Key.Export(CngKeyBlobFormat.Pkcs8PrivateBlob);

CngProvider cp = new CngProvider("NewProvider");
CngKeyCreationParameters ckcp = new CngKeyCreationParameters() { ExportPolicy=CngExportPolicies.AllowPlaintextExport, Provider=cp};
ckcp.Parameters.Add(new CngProperty(CngKeyBlobFormat.Pkcs8PrivateBlob.Format, key, CngPropertyOptions.None));
CngKey cngKey2 = CngKey.Create(CngAlgorithm.Rsa, "OldKey", ckcp);

RSACng rsa2 = new RSACng(cngKey2);
var exportedKey = rsa2.Key.Export(CngKeyBlobFormat.Pkcs8PrivateBlob);
// exportedKey.Equals(key) == true
我在
CngKey上收到一个错误。创建

System.Security.Cryptography.CryptographyException:“未知错误”-1073741275”


奇怪的是,它报告为未知错误。该值为
STATUS\u NOT\u FOUND
(“未找到对象”)

最可能的问题是您没有名为
“NewProvider”
的注册提供商。这不是它要求的密钥容器的名称,而是它应该将密钥发送到哪个库


99%的时间是您想要的
CngProvider.MicrosoftSoftwareKeyStorageProvider
。您所需时间的1%
CngProvider.MicrosoftSmartCardKeyStrageProvider
。几乎无法测量的小,您需要一些其他值。

奇怪的是,它报告为未知错误。该值为
STATUS\u NOT\u FOUND
(“未找到对象”)

最可能的问题是您没有名为
“NewProvider”
的注册提供商。这不是它要求的密钥容器的名称,而是它应该将密钥发送到哪个库

99%的时间是您想要的
CngProvider.MicrosoftSoftwareKeyStorageProvider
。您所需时间的1%
CngProvider.MicrosoftSmartCardKeyStrageProvider
。几乎无法估量的小,你想要一些其他的价值