将PKCS#8加密密钥导入到RSACng?

时间:2018-07-27 15:30:01

标签: c# .net cryptography cng

如果我已经在PKCS#8中加密了RSA密钥,是否可以以RSACng的形式将其导入到CngKeyBlobFormat.Pkcs8PrivateBlob中?还是这个CngKeyBlobFormat.Pkcs8PrivateBlob只是表明CngKey,在导入期间必须从DER解码密钥才能获取密钥参数,然后将其导入RSACng,因此答案是否定的?

1 个答案:

答案 0 :(得分:2)

CNG知道如何解密加密的PKCS#8,但是您需要输入密码。由于.NET不会要求您输入密码(而且密码是通过属性以外的其他方式传递的),因此没有一个好的方法。

您的选择非常多:

  • P /调用,因此您可以指定NCRYPTBUFFER_PKCS_SECRET值。
  • 更改流程,以使您拥有未加密的PKCS#8。
  • 更改流程,以使您拥有PFX / PKCS#12而不是加密的PKCS#8(然后更改为通过X509Certificate2进行读取)。
  • 请等待.NET Core的将来版本,它将能够直接将PKCS#8,加密的PKCS#8和其他一些格式加载到RSA / DSA / ECDsa / ECDiffieHellman对象中(当前功能是在master分支中)。
  • 找到可以为您解密的库。有弹性的城堡可能可以做到。

另请参阅:Digital signature in c# without using BouncyCastle