C#解密与X.509证书没有私钥

时间:2015-09-21 17:42:30

标签: c# encryption cryptography private-key x509certificate2

客户端使用X.509证书加密邮件,并将加密邮件发送到我的Web服务器。客户端提供了没有私钥的X.509证书(导出为DER编码二进制X.509(.cer))。现在我的任务是使用我拥有的X.509证书解密消息。

每当我尝试解密消息时,我都会收到“私钥不存在”的异常,因为证书不包含私钥。在没有私钥的情况下使用x.509证书解密消息是否可行?

其次,如果客户端为证书单独提供密码,我可以创建X509Certificate2的实例并使用它来解密消息,如:

X509Certificate2 c = new X509Certificate2("filename", "password");

1 个答案:

答案 0 :(得分:3)

您需要使用私钥来解密邮件。例如,您可以要求您的客户端为您提供一个包含私钥的.pfx文件,但是,这有点倒退,通常使用非对称加密,发件人(您的客户端)应该使用接收器加密消息& #39; s(您的)公钥,您使用接收方(您的)私钥解密。这样,私钥不会被多方共享,这降低了它被泄露的可能性。私钥的整个概念是它是私有的 - 只有密钥的所有者才能使用它。

编辑:至于第二个问题,密码不是私钥。您可以生成受密码保护的私钥。这意味着为了使用私钥进行解密,您还必须知道保护该私钥的密码。

编辑2:我不确定这是否有帮助,但我很难理解如何在一段时间内实际应用这些概念,所以我写了一系列blog posts可能对你有所帮助。我不是自称是安全专家,但我所写的内容可能会让你开始。