如何使用node.js的crypto模块计算一个二进制大对象的sha1哈希值

4
在我的Node.js应用程序中,我想上传一个文件并计算sha1。
我尝试了以下代码:
export function calculateHash(file, type){
  const reader = new FileReader();
  var hash = crypto.createHash('sha1');
  hash.setEncoding('hex');
  const testfile = reader.readAsDataURL(file);
  hash.write(testfile);
  hash.end();
  var sha1sum = hash.read();
  console.log(sha1sum);
  // fd.on((end) => {
  //   hash.end();
  //   const test = hash.read();
  // });
}

这个文件是从我的网站上使用文件上传按钮选择文件得到的blob文件。

我该如何计算sha1哈希值?


CryptoJS主要是一个客户端库,不应与node.js的加密模块混淆。对于你来说,哪一个更适合呢? - Artjom B.
你在这里呈现的代码有什么问题吗?它不已经可以工作了吗? - Artjom B.
1个回答

4
如果你把内容作为一个整体来阅读,那么你会发现这比必要的困难更加复杂。我们可以这样做:
const fs = require('fs');
export function calculateHash(file, type){
  const testFile = fs.readFileSync(file);
  var sha1sum = crypto.createHash('sha1').update(testFile).digest("hex");
  console.log(sha1sum);
}

解决方案生成了一个错误。无法读取未定义的属性“length”。 - user1526912
只要修正 testfiletestFile 的拼写,这个程序在我的电脑上运行良好。 - Kurtis Streutker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接