【问题标题】:How to encrypt fields in XML document with PHP and RSA / Triple DES如何使用 PHP 和 RSA / Triple DES 加密 XML 文档中的字段
【发布时间】:2010-06-21 15:01:15
【问题描述】:

我正在为南非的学校开发一个应用程序,该应用程序需要将 XML 格式的数据提交给国家 IT 机构进行统计处理。我目前正在使用 PHP 的 DOMDocument 类生成 XML 文件。

我的文件已通过第一阶段验证流程。下一阶段是实现 XML 文件的加密和压缩。压缩是一个简单的 GZip,所以不用担心。

规范文档表明使用了 RSA 加密(我将获得 RSA 密钥以在软件中实现)以及某种形式的对称加密,例如三重 DES(尽管这是一个“示例”和任何http://www.w3.org/TR/xmldsig-core 的算法可以实现)。如果我理解正确的话,RSA 加密是对用于字段实际加密的对称密钥进行编码。

规范文档还说“可以对整个文件或某些元素执行 XML 文件的加密”。在这个阶段,我不太确定哪个更容易,所以任何一个的答案就足够了!

我认为要求是加密 XML 标记的内容而不是名称(如 http://www.w3.org/TR/xmlenc-core/#sec-eg-Element-Content-Character)。

如果这看起来含糊不清,我深表歉意。这是目前我掌握的所有信息,机构的联系人很高兴地说(VisualBasic .NET)代码示例应该解释一切......如果您想检查此代码示例,欢迎您查看以下 ZIP 文件中的 Word 文档,大约从第 213 页开始。 http://www.sita.co.za/doe_lurits/DEVS-00118%20Rev%201.2%2012%20Jan%202009.zip

如果有人可以帮助或指出正确的方向,我将不胜感激。

【问题讨论】:

  • @The Rook 我不反对。不过,可以使用任何受支持的加密方法。

标签: php xml security rsa tripledes


【解决方案1】:

您应该只使用 XMLSec Encryption 加密 XML 文件。以下库应该为您处理所有细节,

http://code.google.com/p/xmlseclibs/

【讨论】:

  • 谢谢:这似乎完全符合我的需要。我会进一步调查。
【解决方案2】:

对称加密见openssl_encrypt,非对称加密见openssl_public_encrypt/openssl_private_decrypt。

【讨论】:

  • @Philip 如果您选择加密 XML,您可以将 XML 文档包装在另一个 XML 文档中,其中包含公钥(或证书)、加密的对称密钥和加密的有效负载,每个都分开元素,可能是 base64 编码的。
【解决方案3】:

听起来您既可以加密整个文档,也可以只加密某些“敏感”标签的内容。加密整个文档可能是最简单的方法。

至于 RSA/3DES - 你几乎肯定是对的。您将使用 3DES 加密文档,然后使用他们的 RSA 公钥加密您的 3DES 密钥。

所以,看来您需要做的只是生成文档,对其进行压缩,然后使用 3DES 对压缩结果进行加密。

【讨论】:

  • 谢谢,埃里克。下一步是了解最终在 XML 中的结构。如何指示对称密钥是什么?加密整个文件很简单,将它放在适当的 结构中就可以了。这将使用三重 DES 完成。但在某个地方,我必须有钥匙?
【解决方案4】:

Symmetric-encrypted-document-plus-PK-encrypted-key 架构本质上是 PGP。您的客户会接受 OpenPGP 吗?

【讨论】:

  • 你没有看错,但我正在编写一个接口,用于将数据传输到现有系统中。因此我必须遵守它们:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 2011-05-27
相关资源
最近更新 更多