【问题标题】:Send a hash value over soap通过肥皂发送哈希值
【发布时间】:2014-09-10 07:19:49
【问题描述】:

是否可以通过 SOAP 发送一个 MD5 哈希计算的字符串?

每当我做类似String key = md5(something) 并尝试通过 Java SOAP 客户端发送密钥,我总是收到错误消息

消息:在文档的元素内容中发现了一个无效的 XML 字符(Unicode:0xsomething)。

我知道在字符串上计算 md5 可能会产生无效的 XML 字符。问题是要知道是否有办法让它通过。

我正在使用 Java 的 MessageDisgest 类来计算 MD5 字符串。

最好的问候。

埃德蒙

【问题讨论】:

  • 不了解您究竟在用 java bean 做什么以及如何将其转换为 xml,很难给出建议。
  • 顺便说一句,这不是soap,一般是xml

标签: java xml soap hash md5


【解决方案1】:

只需将 MD5 字节数组转换为十六进制字符串表示或使用 Base64 对其进行编码。两种转换都会生成一个简单的字符串,该字符串可以包含在 XML 中而无需 (XML) 编码。

Decode Base64 data in Java

Convert from byte array to hex string in java

【讨论】:

  • 感谢@icza 的快速回答。根据您提供的第二个链接Link,我尝试了 2 个替代方案,它们是 javax.xml.bind.DatatypeConverter 和 org.apache.commons.codec.binary.Hex。这是非常惊人的,因为它们都产生了不同的输出。第一个字母为小写,而另一个字母为大写。所以我在这里说的是实话。
  • 在十六进制表示中,小写或大写数字没有意义,'a''A' 相同。您可以使用String.toLowerCase()String.toUpperCase() 将一种形式转换为另一种形式。
猜你喜欢
  • 2011-06-29
  • 2014-07-08
  • 1970-01-01
  • 2012-09-09
  • 1970-01-01
  • 2011-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多