2014-04-02 87 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階段只是添加「|」嘆息在你的字符串末尾,所以...... =)