c# - 如何在 RSGCng 中加载 CspParams
问题描述
我们正在尝试使用 RSACng 对象中的 cspParams 从容器名称加载私钥。我们看不到加载它的直接方法,目前我们正在执行以下解决方法以从 RSACryptoServiceProvider 加载它,如下所示,
using (var rsa = new RSACryptoServiceProvider(cspParams))
{
using(var rsaCng = new RSACng())
{
rsaCng.ImportParameters(rsa.ExportParameters(true));
decryptedResult = rsaCng.Decrypt(encryotedText, RSAEncryptionPadding.OaepSHA256)
}
}
这是唯一的方法还是我们有任何其他直接的方法来从 rsaCng 对象中的容器名称加载私钥
解决方案
CngProvider provider = new CngProvider("Microsoft Enhanced RSA and AES Cryptographic Provider");
using (CngKey key = CngKey.Open(containerName, provider))
using (RSA rsa = new RSACng(key))
{
...
}
应该可以工作,唯一感到困惑的是,当您使用具有不同签名密钥和交换具有相同名称的密钥的 CAPI 功能时(CNG-opening-CAPI 在执行 CAPI 加载时尝试交换然后签名......因为您没有指定您正在使用交换)。
推荐阅读
- pyspark - 使用数据框在 pyspark 中实现 Louvain
- html - 我无法在我的 html 代码中更改表格中特定单元格/列的宽度
- java - 从 Maven 远程存储库中删除版本
- c++ - 以向量为键的 C++ 映射。如何使其矢量顺序无关紧要?
- c - GDB 有用户标识吗?
- json - 如何在颤动中获得 JSON 映射的第一个值?
- angular - Angular9:获取找不到“对象”类型的不同支持对象“[对象对象]”。NgFor 仅支持绑定到 Iterables,例如 Arrays
- javascript - 如何在 React + Babel 中允许异步函数?
- angular - 当我在表单中按下不同的按钮时执行 onSubmit 方法
- r - 查找 R 中 2 个数据帧中 2 个变量的匹配项与容差的交集