【问题标题】:Importing PKCS#8 encrypted key to RSACng?将 PKCS#8 加密密钥导入 RSACng?
【发布时间】:2018-07-27 15:30:01
【问题描述】:

如果我在 PKCS#8 中加密了 RSA 密钥,我可以以某种方式将它作为 CngKeyBlobFormat.Pkcs8PrivateBlob 导入到 RSACng 吗?还是这个CngKeyBlobFormat.Pkcs8PrivateBlob 只是显示CngKey 在导入期间必须从DER 中解码密钥以获取密钥参数,然后将它们导入RSACng,因此答案是否定的?

【问题讨论】:

    标签: c# .net cryptography cng


    【解决方案1】:

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

    您的选择非常多:

    • P/Invoke,以便您可以指定 NCRYPTBUFFER_PKCS_SECRET 值。
    • 更改您的流程,以便您拥有未加密的 PKCS#8。
    • 更改您的流程,以便您拥有 PFX/PKCS#12 而不是加密的 PKCS#8(然后更改为通过 X509Certificate2 读取它)。
    • 等待 .NET Core 的未来版本,它将能够将 PKCS#8、加密的 PKCS#8 和一些其他格式直接加载到 RSA/DSA/ECDsa/ECDiffieHellman 对象中(该功能目前在主分支中)。
    • 找到可以为您解密的库。充气城堡或许可以做到。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多