我在將字符串轉換爲字節數組以將其散列時出現了一個奇怪的問題。現在,我的代碼是這樣的:Java字符串到字節數組每次運行更改
String textToHash = "test";
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(textToHash.getBytes("UTF-8"));
hash = messageDigest.digest();
即使字符串是一樣的,在不同的運行,改變(從textToHash.getBytes("UTF-8")
生成)的字節數組。有時它會有一個值,而其他時候它會改變,即使字符串是靜態的。爲什麼會發生這種情況,我怎樣才能使它可靠地散列字符串?
謝謝!
我覺得這是的「你認爲正在發生的是什麼是不是有什麼是真正發生」的情況下。對於給定的輸入字符串,String.getBytes應該返回相同的結果。究竟什麼導致你相信輸入字符串是相同的,但getBytes返回不同的結果? – davmac
我的輸入字符串總是「測試」。當我打印「textToHash.getBytes」的值時,它有時會返回不同的值。 –