2

文字列をバイト配列に変換してハッシュする際に奇妙な問題が発生しています。今、私のコードは次のようなものです:

    String textToHash = "test"; 
    MessageDigest messageDigest = MessageDigest.getInstance("MD5");
    messageDigest.update(textToHash.getBytes("UTF-8"));
    hash = messageDigest.digest();

文字列は同じですが、異なる実行では、バイト配列 (から生成されたものtextToHash.getBytes("UTF-8")) が変更されます。値が 1 つの場合もあれば、文字列が静的であっても変化する場合もあります。なぜこれが起こっているのですか?文字列を確実にハッシュするにはどうすればよいですか?

ありがとう!

4

1 に答える 1

2

更新前に MessageDigest.reset を呼び出す

http://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html#reset()

于 2013-01-24T14:22:21.100 に答える