繁体   English   中英

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

[英]C# Decryption with X.509 certificate without private key

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM