所以現在,我的Java代碼正在創建一個與我們的Perl代碼不同的SHA-256哈希,但只有在UTF8字符發揮作用時。我做了一些調試,發現名稱的字節[]表示約爾格是如在語言如下:Perl/Java字節編碼差異
爪哇74,-61,-74,114,103
Perl的74,195,182,114 ,103
可能會導致哈希差異?看起來Java使用帶符號的字節,而Perl使用無符號的。更多信息如果需要/請求!
謝謝!
所以現在,我的Java代碼正在創建一個與我們的Perl代碼不同的SHA-256哈希,但只有在UTF8字符發揮作用時。我做了一些調試,發現名稱的字節[]表示約爾格是如在語言如下:Perl/Java字節編碼差異
爪哇74,-61,-74,114,103
Perl的74,195,182,114 ,103
可能會導致哈希差異?看起來Java使用帶符號的字節,而Perl使用無符號的。更多信息如果需要/請求!
謝謝!
所以問題原來是在Java中,當我反轉字符串時,它是反轉字符(如預期的那樣)。在Perl中,reverse實際上在字節上工作。這意味着逆轉約爾格時看上去像這樣的語言:
的Java 103 114 -61 -74 74
的Perl 103 114 195 182 74
希望這有助於別人了!
由於數據輸入到程序中,所以您沒有將字節串解碼爲字符。有關詳細信息,請參閱「perldoc perlunicode」(http://perldoc.perl.org/perlunicode.html)。 – 2012-08-16 09:23:45
*「看來Java使用帶符號字節,而Perl使用無符號。」* - 你在那裏回答了你自己的問題。使用'theByte&0xFF'來獲取一個int類型的無符號版本。 – 2012-08-15 16:50:12
但是,當我使用MessageDigest(SHA-256)對字符串進行散列時,會不會導致差異? – thatidiotguy 2012-08-15 16:54:48
只是好奇,當你說「我的Java代碼正在創建」時,你的意思是你寫了你自己的哈希實現嗎? – 2012-08-15 16:55:17