2009-10-20 346 views
1

如果我作爲獨立應用程序運行或在Web應用程序內運行,java實現會爲同一個輸入字符串創建兩個不同的摘要。使用Java處理MD5哈希問題

獨立的應用程序與Oracle DBMS中 匹配的實現是

MessageDigest md5 = MessageDigest.getInstance("MD5"); 

    if (md5 != null) { 
     md5.reset(); 
     newHashByte = md5.digest(msg.getBytes()); 
    } 

    newHash = convertToString(newHashByte); 

十六進制字符串轉換實現

StringBuffer result = new StringBuffer(64); 

for (int i = 0; i < digestBits.length; i++) 
    hexDigit(result, digestBits[i]); 

return result.toString(); 

高度讚賞,如果你能幫助我們解決這個。

回答

2

msg哪裏來自於每種情況?我認爲在一種情況下你很可能有一個換行符,但不是另一個。在兩種情況下,您的字符編碼也可能以不同方式設置。我非常懷疑您示例中的其他內容除msg之外都在發生變化。

7

我懷疑你有不同的默認編碼。使用像這樣的正確編碼,

newHashByte = md5.digest(msg.getBytes("utf-8"));