如何encrypt/decrypt XMl 正确使用X.509 证书?

How to encrypt/decrypt XMl wiith X.509 certificate correctly?

我想使用 X.509 证书加密 XML 文件并解密它。据我所知,我需要使用 public 密钥(在证书内)来加密 XML 和私钥来解密 XML。因此只有拥有私钥的人才能读取解密后的数据。 微软在这里为 encryption/decryption 提供了一些代码:

加密:https://msdn.microsoft.com/en-us/library/ms229744(v=vs.110).aspx

解密:https://msdn.microsoft.com/en-us/library/ms229943(v=vs.110).aspx

正如您从第一个示例中看到的那样,将加载 X.509 证书来加密文件。但是第二个示例没有(!)加载证书来解密示例。加密文件似乎包含所有需要解密的数据?这是否意味着该文件可以被任何人解密?我想我在这里理解滞后-为什么不需要使用证书来解密数据?

此致, 迈克尔

解密时,将从计算机证书存储区加载证书。从你的第二个 link:

The code example in this procedure decrypts an XML element using an X.509 certificate from the local certificate store of the current user account.

在该示例中,用于加密 XML 的 public 密钥存储在加密数据中,用于从存储中查找正确的证书。

因此,您的问题 "why is not necessary to use a certificate to decrypt the data" 的答案是:有必要。证书已自动加载。