问题描述
我有一个公钥证书和一个私钥。在添加到 x509store 之前,我想用密码保护私钥。
我的要求是,当我使用主题名称从商店中找到 x509certificate2 时,我应该使用私钥获取证书。但私钥应该受密码保护,没有任何 ui 提示。
在创建 rsacryptoservice provider 时,我尝试将密钥密码附加到 csp 参数,我可以创建 rsacryptoserviceprovider 对象。我已将其附加到 x509certificate2 并添加到 Windows 商店。但是从存储私钥检索后抛出加密异常。
var cspParams = new CspParameters
{
ProviderType = 1,Flags = CspProviderFlags.UseMachineKeyStore
};
string passphrase = "password";
char[] passPhrase = passphrase.ToCharArray();
SecureString keyPassword = new SecureString();
for (int i = 0; i < passPhrase.Length; i++)
{
keyPassword.AppendChar(passPhrase[i]);
}
cspParams.KeyPassword = keyPassword;
using (RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(cspParams))
{
rsaProvider.ImportParameters(rsaParam);
rsaProvider.PersistKeyInCsp = true;
X509Certificate2 x509Certificate = new X509Certificate2(Convert.FromBase64String(cryptoCertificate),"123",X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable |
X509KeyStorageFlags.PersistKeySet)
{PrivateKey = rsaProvider};
store.Add(x509Certificate);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)