C#通过读取智能卡上的密钥来解密电子邮件

C#通过读取智能卡上的密钥来解密电子邮件,c#,cryptography,rsa,smartcard,C#,Cryptography,Rsa,Smartcard,我的一个客户需要一个工具来解密他们的电子邮件 他们正在使用智能卡进行加密/解密 到目前为止,他们正在使用一种要求他们输入公钥的工具。在给出有效的公钥后,智能卡上的公钥和私钥组合将帮助他们解密电子邮件 我们正在开发一个工具,它可以是一个windows服务(在后台运行),并通过我们一次又一次地提示用户输入公钥来解密所有电子邮件 我们正在使用C#开发这个工具,从博客中我了解到,我们需要使用Microsoft CSP来实现这个功能。我认为下面的代码将能够使用智能卡容器并读取私钥。但我不知道如何提供该邮件

我的一个客户需要一个工具来解密他们的电子邮件

他们正在使用智能卡进行加密/解密

到目前为止,他们正在使用一种要求他们输入公钥的工具。在给出有效的公钥后,智能卡上的公钥和私钥组合将帮助他们解密电子邮件

我们正在开发一个工具,它可以是一个windows服务(在后台运行),并通过我们一次又一次地提示用户输入公钥来解密所有电子邮件

我们正在使用C#开发这个工具,从博客中我了解到,我们需要使用Microsoft CSP来实现这个功能。我认为下面的代码将能够使用智能卡容器并读取私钥。但我不知道如何提供该邮件的公钥并解密该邮件

CspParameters csp = new CspParameters(1, "Microsoft Base Smart Card Crypto Provider");
// CspParameters csp = new CspParameters(1, "Microsoft Strong Cryptographic Provider");
csp.Flags = CspProviderFlags.UseDefaultKeyContainer;

// Initialize an RSACryptoServiceProvider object using 
// the CspParameters object.
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp);

如果我走错了方向,有人能纠正我吗?另外,请说明进一步的操作。

您通常需要私钥/证书组合来解密邮件。证书应绑定到私钥,否则无法找到私钥。当然,解密不需要公钥。否则,您的“实现”缺乏深度。如果您认为上述代码能够使用智能卡容器,请尝试对智能卡执行某些操作-查找存储在智能卡上的证书。然后尝试使用与之关联的私钥。@owlstead谢谢您的回复。请您引导我查找与智能卡相关的证书,好吗?