gpt4 book ai didi

java - 使用 SAAJ 对 Java SOAP 调用进行 Blowfish 加密

转载 作者:行者123 更新时间:2023-12-01 15:15:09 25 4
gpt4 key购买 nike

我们使用标准 Java/SAAJ 功能来创建 SOAP 消息并执行 Web 服务 (WS) 调用。到目前为止,跨 HTTP 传输的通信已解密,并且使用此方法在端点上调用 WS 工作得很好:

SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
SOAPConnection con = scf.createConnection();
URL endpoint = new URL(endpointUrl); // configured HTTP URL

// "message" is passed as parameter (a SOAPMessage object)
SOAPMessage response = con.call(message, endpoint);
con.close();

现在我们的客户希望我们使用 Blowfish 加密所有流量。我知道我可以使用以下简单方法加密任意数据(此示例仅使用随 secret 钥):

KeyGenerator kgen = KeyGenerator.getInstance("Blowfish");
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "Blowfish");

Cipher cipher = Cipher.getInstance("Blowfish");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
String inputString = "This is just an example";
byte[] encrypted = cipher.doFinal(inputString.getBytes());

Cipher decCipher = Cipher.getInstance("Blowfish");
decCipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decrypted = decCipher.doFinal(encrypted);

assertEquals(inputString, new String(decrypted));

但是,缺少的链接是:如何将这两部分放在一起,以便我可以使用 Blowfish 加密有效负载并在收到响应后对其进行解密?

Java 提供的标准工具(SOAPMessageSOAPConnection 等)似乎根本不支持任何加密。我已经看到 Spring 的 WebServiceTemplate 支持 ClientInterceptor 实例,这可能会有所帮助。但是,我必须重写我们的 WS 代码才能使用 spring-ws。而且我还没有在 their reference docs 中找到示例它解释了如何使用 spring-ws 进行这种加密。

我是否缺少一些简单的方法来加密通信?如果是,那是什么?如果没有,有哪些好的选择可以实现客户的要求?

更新:使用 HTTPS 作为安全传输不是一种选择。

非常感谢您的帮助。

最佳答案

这篇文章很长,因此很难在这里进行总结,但您可能想使用 Web 服务安全性,IBM 有一篇关于这方面的精彩文章。

http://www.ibm.com/developerworks/java/library/j-jws5/index.html

但是,您将遇到几个问题,其中一个是 key 交换,对于 Blowfish 来说,因为它在客户端和服务器端需要相同的 key ,因此您将面临有人拦截 key 的风险,除非您可以在例如跳跃驱动器。

您可能想查看数据并了解哪些部分需要加密,然后您可以使用 RSA 加密对称 key ,将其作为参数传递到 SOAP 服务中,然后该 key 用于加密任何字段需要受到保护。

通过使用公钥加密来执行此操作,您可以在每次调用时更改 Blowfish key ,并且 key 交换仍然是安全的,因为需要私钥(在服务器上)来恢复 key 。

关于java - 使用 SAAJ 对 Java SOAP 调用进行 Blowfish 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11719743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com