1. 程式人生 > >js跟java計算檔案MD5不一致問題

js跟java計算檔案MD5不一致問題

最近專案中發現js跟java算出的MD5值不一樣,經比較發現是js問題。因為在js中,甚至二進位制流都是利用UTF-16編碼的,而大多數計算md5值的方案都是基於二進位制流的, 所以需要將js讀出來的二進位制流(已經被轉換成UTF-16編碼)還原成二進位制流。latin—1編碼同二進位制流,所以將js流轉換成latin—1編碼即可。

var binary = e.target.result;//js讀出來的二進位制流
var md5_hash1 = CryptoJS.MD5(CryptoJS.enc.Latin1.parse(test)).toString();//通過google的CryptoJS外掛計算檔案的MD5值
//CryptoJS.enc.Latin1.parse(test)將js讀出來的二進位制流(已被UTF-16編碼)還原成普通二進位制流