【问题标题】:How to encrypt/decrypt XMl wiith X.509 certificate correctly?如何使用 X.509 证书正确加密/解密 XMl?
【发布时间】: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)的大小必须小于密钥。

标签: c# xml encryption x509 encryption-asymmetric


【解决方案1】:

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

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

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

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

【讨论】:

  • 我明白了。我觉得让代码自动加载证书有点不灵活,但应该是这样吧。事实上,我尝试了代码并且它有效。如果我在运行代码之前从我的机器中删除了证书,则会引发异常。这就是代码确实需要证书的证据。谢谢。
  • @MichaelXanadu 回复:失去灵活性:好吧,如果需要,您可以从商店手动加载证书。这有点复杂。
  • 我想知道如何做到这一点。有链接吗?
  • 只需谷歌“c#从商店站点加载证书:stackoverflow.com”。
猜你喜欢
  • 1970-01-01
  • 2011-05-05
  • 2014-03-14
  • 1970-01-01
  • 2014-06-30
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
  • 1970-01-01
相关资源
最近更新 更多