CryptoJS 计算文件 SHA1

在浏览器使用 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.readAsreadAsBinaryString(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);