2014-04-02 62 views
-1

我想用java产生一个字符串“TREFFLAGDATAC000000EN”的MD5校验和值,但是对于相同的字符串IBM InfoSphere DataStage正在生成不同的MD5校验和值。发现由java和datastage生成不同的MD5哈希值

任何人都可以请指导我如何生成数据阶段给出的相同的MD5校验和值?

MD5由Java代码:通过数据阶段产生4659dff22b357cd9cc9fe0979603d1ab MD5:fd607ac2a5d19980795c584dff24b899

下面

是我的Java代码

public static void main(String[] args) throws UnsupportedEncodingException{ String value = "TREFFLAGDATAC000000EN"; String hashCode = DigestUtils.md5Hex(value.getBytes("UTF-8")); System.out.println(hashCode); }

+0

那么目前你的代码是特定于平台的 - 你使用'value.getBytes()'这将使用平台默认编码来转换文本成字节。这可能不是问题,但它是*潜在的问题。你也在一个字符串上调用'toString()',这很奇怪。您的示例代码中的“值”是空字符串,而不是“TREFFLAGDATAC000000EN”。 –

+0

感谢您的回复Jon。我现在用字符串值更新了我的代码。 – user3488451

回答

0

你应该试试这个http://www.asjava.com/core-java/java-md5-example/

我想你应该在源代码结尾处将字符串数据类型变为chage vlaue。您将在abouve链接中找到样本。

+0

感谢您的回复。用你共享的代码,我仍然获得相同的MD5值。但它与Data Stage工具生成的MD5校验和值不匹配。 MD5通过java代码生成:由数据阶段产生4659dff22b357cd9cc9fe0979603d1ab MD5:fd607ac2a5d19980795c584dff24b899 是在那里有MD5算法是java和数据阶段之间是不同的任何情形? – user3488451

0

您可以调试DataStage Checksum查看缓冲区内容... 实际上,DataStage Checksum阶段只是添加“|”叹息在你的字符串末尾,所以...... =)