Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在浏览器中计算文件的校验和,并获得与windows命令提示相同的结果_Javascript_Node.js_Hash_Sha1 - Fatal编程技术网

Javascript 如何在浏览器中计算文件的校验和,并获得与windows命令提示相同的结果

Javascript 如何在浏览器中计算文件的校验和,并获得与windows命令提示相同的结果,javascript,node.js,hash,sha1,Javascript,Node.js,Hash,Sha1,我正试图从我的网页上传的文件中获取校验和/哈希 我目前可以通过浏览器上传文件,然后使用node.js加密库计算哈希值。我首先将blob转换为数据Url export function calculateHash(dataUrl, type){ const sha1sum = crypto.createHash('sha1').update(dataUrl).digest("hex"); console.log('Hash sum is ' + sha1sum); } 结果:66B8

我正试图从我的网页上传的文件中获取校验和/哈希

我目前可以通过浏览器上传文件,然后使用node.js加密库计算哈希值。我首先将blob转换为数据Url

export function calculateHash(dataUrl, type){

  const sha1sum = crypto.createHash('sha1').update(dataUrl).digest("hex");
  console.log('Hash sum is ' + sha1sum);

}
结果:66B8BDD2D1D49F70872C15B26409BC072096697

当我使用以下命令从windows命令提示符手动计算哈希时

fciv.exe 1_1.wav -sha1
结果:b06071b13a1b50cd2976ed7bb4180f6963e8db8e

我希望从浏览器中的数据url获得与从命令提示符执行手动检查相同的校验和结果


这可能吗?

数据url看起来像
data:image/png;base64,
。您需要提取BASE-64数据部分,解码base64,然后运行哈希算法。或者-如果要在浏览器中执行哈希-请使用FileReader API:

函数calculateHash(文件,回调){
let reader=new FileReader();
reader.onload=函数(事件){
让文件_sha1=sha1(reader.result);
回调(文件_sha1);
};
reader.readAsArrayBuffer(文件);
}
让输入=document.getElementById(“输入文件”),
info=document.getElementById(“info”);
input.addEventListener(“更改”,函数(事件){
让file=input.files[0];
如果(文件){
calculateHash(文件,函数)(文件\u sha1){
info.textContent=文件\u sha1;
});
}
});

数据url看起来像
数据:image/png;base64,
。您需要提取BASE-64数据部分,解码base64,然后运行哈希算法。或者-如果要在浏览器中执行哈希-请使用FileReader API:

函数calculateHash(文件,回调){
let reader=new FileReader();
reader.onload=函数(事件){
让文件_sha1=sha1(reader.result);
回调(文件_sha1);
};
reader.readAsArrayBuffer(文件);
}
让输入=document.getElementById(“输入文件”),
info=document.getElementById(“info”);
input.addEventListener(“更改”,函数(事件){
让file=input.files[0];
如果(文件){
calculateHash(文件,函数)(文件\u sha1){
info.textContent=文件\u sha1;
});
}
});


你能解释一下在这里做什么吗:reader.onload=function(event){var contents=event.target.result;//在这里散列你的内容…info.textContent=contents;}“我想从我的浏览器中的数据url获得相同的校验和结果”-我的回答是:不要使用数据url,但要在浏览器中获取校验和,文件内容将被删除。您需要插入注释所在的sha1哈希和生成器,哈希
内容
。event.target.result是否与数据url相同?你说的使用文件内容是什么意思…我应该使用文件blob的哪一部分。。。很抱歉,我是初学者,“运行代码片段”不适用于此Github链接。考虑使用CDN Hel.@ Dun.PeLin谢谢你让我知道,它现在应该再次工作。你能解释在这里做什么:Read?.NoLoad =函数(事件){var内容= Evest.Toal.RESULT;//散列你的内容…iFo.TrimeCult=内容;}“我希望从浏览器中的数据url获得相同的校验和结果-我的答案是:不要使用数据URL,而是使用文件内容在浏览器中获取校验和。您需要插入注释所在的sha1哈希和生成器,哈希
内容
。event.target.result是否与数据url相同?你说的使用文件内容是什么意思…我应该使用文件blob的哪一部分。。。很抱歉,我是初学者,“运行代码片段”不适用于此Github链接。考虑使用CDN Hel.@ DeN.PePin谢谢你让我知道,它现在应该再次工作。你在这里提出的代码是从No.js的密码模块。这与浏览器或[cryptojs]无关!由于这似乎是服务器代码,如何调用
calculateHash
函数?该功能的输入是什么?你能举几个例子吗?这与对您前面问题的注释基本相同。Node.js代码在服务器上运行,并且仅通过请求与浏览器通信。您使用什么类型的请求?你读过这里的代码吗?它来自node.js的加密模块。这与浏览器或[cryptojs]无关!由于这似乎是服务器代码,如何调用
calculateHash
函数?该功能的输入是什么?你能举几个例子吗?这与对您前面问题的注释基本相同。Node.js代码在服务器上运行,并且仅通过请求与浏览器通信。您使用什么类型的请求?你读过吗