如何在RSGCng中加载CspParams
How to load CspParams in RSGCng
我们正在尝试使用 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 加载时尝试交换然后签名...因为你没有指定你正在使用交换)。
我们正在尝试使用 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 加载时尝试交换然后签名...因为你没有指定你正在使用交换)。