C# X509Certificate2.PrivateKey性能缓慢
我正在从证书存储加载证书。所以我有一个X509Certificate2对象。 接下来,我加载用于签名消息的私钥。我使用的代码是:C# X509Certificate2.PrivateKey性能缓慢,c#,.net,cryptography,C#,.net,Cryptography,我正在从证书存储加载证书。所以我有一个X509Certificate2对象。 接下来,我加载用于签名消息的私钥。我使用的代码是: public static RSACryptoServiceProvider GetPrivateKey(X509Certificate2 cert) { var enhCsp = new RSACryptoServiceProvider().CspKeyContainerInfo; var privateKey = (RSACryptoService
public static RSACryptoServiceProvider GetPrivateKey(X509Certificate2 cert)
{
var enhCsp = new RSACryptoServiceProvider().CspKeyContainerInfo;
var privateKey = (RSACryptoServiceProvider)cert.PrivateKey; //very slow
var cspparams = new CspParameters(enhCsp.ProviderType, enhCsp.ProviderName, privateKey.CspKeyContainerInfo.KeyContainerName);
return new RSACryptoServiceProvider(cspparams);
}
我遇到的问题是:
var privateKey=(rsacyptoserviceprovider)cert.privateKey代码>
需要很长时间。在我的笔记本电脑上大约9秒钟。似乎并非每次我尝试访问私钥时都会发生这种情况。有时它是以毫秒为单位的,而其他时间则与所描述的时间一样长
了解原因吗?有没有办法避免这种情况
更新:
在注意到这一点和其他一些情况后,我一直在做一些实验。
在没有网络连接的情况下,似乎永远不会有延迟。
我想知道我是否真的必须去反编译.NET程序集来解决这个问题
更新1:
似乎真正的权威机构颁发的证书/密钥对不受影响。我在尝试为已手动添加到受信任根证书颁发机构的颁发者加载私钥时发现此问题您的私钥是否存储在硬件设备上?证书可以缓存在PC上,私钥无法缓存,原因很明显。。。基于密码的私钥解密也可能需要很长时间。私钥存储在本地证书存储中。它没有密码保护。您的私钥是否存储在硬件设备上?证书可以缓存在PC上,私钥无法缓存,原因很明显。。。基于密码的私钥解密也可能需要很长时间。私钥存储在本地证书存储中。它没有密码保护。