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编码)还原成普通二进制流


你可能感兴趣的:(javaWeb,js)