我在将字符串转换为字节数组以对其进行哈希处理时遇到了一个奇怪的问题。现在,我的代码是这样的:

    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()

10-07 21:16