java - 加密xml文件

标签 java .net xml encryption-asymmetric x509certificate2

makecert -r -pe -n "CN=CERT_SIGN_TEST_CERT" -b 01/01/2010 -e 01/01/2012 -sky exchange -ss my

使用此命令我生成证书并从中导出 .pfx 文件,此 pfx 文件用于加密 xml 文件

in .net using EncryptedXml , X509Certificate2, RSACryptoServiceProvider and XmlDocument classes

我加密下面的xml

<Test><Name>Foo</Name><CardNo>123</CardNo></Test>

如下:

<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#"><EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" /><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#"><EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" /><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><X509Data><X509Certificate>MIICFzCCAYCgAwIBAgIQK5IFtxwNaJhGzXuDf92TgzANBgkqhkiG9w0BAQQFADAfMR0wGwYDVQQDHhQARgBpAG4AYQBsAF8AQwBlAHIAdDAeFw0wOTEyMzExODMwMDBaFw0xMjEyMzExODMwMDBaMB8xHTAbBgNVBAMeFABGAGkAbgBhAGwAXwBDAGUAcgB0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1Wx11luboMbT1swXV/56j2RYRhR81n9hF3b6tfof1zHRorg7DIP3hvnVtqDF+WxAjn1um97DHtxWf3solthbIHC9cGtqxUhZhgdd0aVAuiKTBbTgnOWdEqTErenrHOzlZnD9iDzOm3OYVLKN+3hKJmjlhTp0sFsu4AIbXlxZVHQIDAQABo1QwUjBQBgNVHQEESTBHgBBDXPlnSZ5zUyVbxJzJO12goSEwHzEdMBsGA1UEAx4UAEYAaQBuAGEAbABfAEMAZQByAHSCECuSBbccDWiYRs17g3/dk4MwDQYJKoZIhvcNAQEEBQADgYEAiubZJZdF3Y9ItOl7LTyixcbuebs50GLFsTeMslS3usq6psXcUEFJntXJ5vXOSe/vp6E6A5AwW4MtPfnB1kzach4T4+WlWeaDHoyj6y5j+n7P6B/X6ZhkQ8MCiGhZ/fTOt7CDisnFVG9gvoH2LUEs1QkiByDq6jii3TUAMN9YQdA=</X509Certificate></X509Data></KeyInfo><CipherData><CipherValue>Vyml+mtbeL5bE6EWKNqHfnE1xEkbJglcxbjH3Y7pj9BtXVImAI/SbBdLHatyjIAei7qUfhcn+qYC7WAh48XR78BgqCdJX7O5lfZjVSVeVaQUwl1Bdirdz7RYuveIjDtEIM80W4tB6rq2nOgYNkisxhhwIl7EiCQtT42bSGCKFic=</CipherValue></CipherData></EncryptedKey></KeyInfo><CipherData><CipherValue>ezVeQlBGZRbHqitB2mmHuMvifGB9IhG1g0CWmL8iz37JIIw7x5cGbb5Ap8iy24ACu8TJpwgAGIUWnUTDSZ//kWLzCa3G5HL+jT/RHn+zypk=</CipherValue></CipherData></EncryptedData>

至于加密是使用 w3c 标准完成的。我怎样才能在 java 上解密这个 xml 文件。我使用 .pfx 文件来加密文件。在 .net 中,我可以使用以下方法解密文件:

 EncryptedXml encXml = new EncryptedXml(xmlEncDoc);  
encXml.DecryptDocument();

我如何在 java 中解密,我应该将 pfx 文件传递​​给 java 端吗?因为在加密的 xml 文件中有标签。

我们采纳您的建议。

最佳答案

您是否可以控制 XML 消息的发件人和收件人?最好遵循 XML 的 W3 标准 Signatures . Java 6 包括对数字签名的完全支持,并且有一个很好的 tutorial available 解释了如何做。

关于java - 加密xml文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10204603/

相关文章:

c# - 在完成之前开始下载部分 azure blob

python - jira SOAP 和 XMLRPC

java - 是否可以在 android listview 分隔符中添加 xml 布局?

java - 调试客户防火墙问题

java - JSON 解析器从大型 JSON 文件中逐个读取条目

java - 通过键盘在 JTable 中按下 JButton

c# - 获取进程私有(private)工作集内存

java - 使用监听器的奇怪 java 并发问题

c# - Entity Framework 和模拟

xml - 从 XML 文档生成 XPATH 到属性级别