我遇到一个奇怪的问题,即将字符串转换为字节数组以对其进行哈希处理。现在,我的代码是这样的:
String textToHash = "test";
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(textToHash.getBytes("UTF-8"));
hash = messageDigest.digest();
即使字符串相同,在不同的运行中,字节数组(从textToHash.getBytes("UTF-8")
生成)也会发生变化。有时它会有一个值,有时它会改变,即使字符串是静态的。为什么会发生这种情况?如何让它可靠地散列字符串呢?
谢谢!
答案 0 :(得分:1)
在更新前调用MessageDigest.reset
http://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html#reset()