2009-10-20 138 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"));