在浏览器使用 CryptoJS 的时候,发现 CryptoJS 在处理文本的时候没有问题,在处理文件的时候结果就出错了。
在计算文件 SHA1 值的时候 使用代码
var reader = new FileReader();
reader.onload = function(event){
var res = event.target.result;
var sha1 = CryptoJS.SHA1(res).toString();
console.log(sha1);
};
reader.readAsBinaryString(file);
// reader.readAsArrayBuffer(file); 两种方法均不正确
最后解决办法就是绕道而行,毕竟条条大路通罗马 不是
最终使用 Forge 的代码
var reader = new FileReader();
reader.onload = function(event){
var res = event.target.result;
var md = forge.md.sha1.create();
md.update(res);
console.log(md.digest().toHex());
};
reader.readAsBinaryString(file);
最近不忙就又想到了这个问题 CryptoJS 计算文件 SHA1
最终使用 CryptoJS 的代码 如下
var reader = new FileReader();
reader.onload = function(event){
var res = event.target.result;
res = CryptoJS.lib.WordArray.create(res);
var sha1 = CryptoJS.SHA1(res).toString();
console.log(sha1);
};
reader.readAsArrayBuffer(file);