如何在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 加载时尝试交换然后签名...因为你没有指定你正在使用交换)。