如何使用 X.509 证书正确加密/解密 XMl?

Posted

技术标签:

【中文标题】如何使用 X.509 证书正确加密/解密 XMl?【英文标题】:How to encrypt/decrypt XMl wiith X.509 certificate correctly? 【发布时间】:2017-07-12 14:00:28 【问题描述】:

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

加密: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 证书来加密文件。但是第二个示例没有(!)加载证书来解密示例。似乎加密的文件包含所有需要解密的数据?这是否意味着文件可以被任何人解密?我想我在这里理解滞后-为什么不需要使用证书来解密数据?

问候, 迈克尔

【问题讨论】:

注意要加密的数据(XMI)的大小必须小于密钥。 【参考方案1】:

解密时,证书从计算机证书存储中加载。从您的第二个链接:

此过程中的代码示例使用当前用户帐户的本地证书存储中的 X.509 证书解密 XML 元素。

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

所以你的问题的答案 - “为什么不需要使用证书来解密数据” - 是:这是必要的。证书已自动加载。

【讨论】:

我明白了。我觉得让代码自动加载证书有点不灵活,但应该是这样吧。事实上,我尝试了代码并且它有效。如果我在运行代码之前从我的机器中删除了证书,则会引发异常。这就是代码确实需要证书的证据。谢谢。 @MichaelXanadu 回复:失去灵活性:好吧,如果需要,您可以从商店手动加载证书。这有点复杂。 我想知道如何做到这一点。有链接吗? 只需谷歌“c#从商店站点加载证书:***.com”。

以上是关于如何使用 X.509 证书正确加密/解密 XMl?的主要内容,如果未能解决你的问题,请参考以下文章

X509 证书生成

Java加密与解密笔记 高级应用

数字证书

SSL工作原理,SSL加密原理,SSL证书怎么加密

如何建立对中介颁发的 X.509 证书的信任?

使用 openssl 生成证书