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