Javascript SHA1库-同一二进制文件上的不同哈希

Javascript SHA1库-同一二进制文件上的不同哈希,javascript,node.js,encoding,hash,cryptography,Javascript,Node.js,Encoding,Hash,Cryptography,当我调用带有文本文件的工具时,一切正常。但是当我通过二进制的时候,结果总是不同的。 我必须使用一些js库,比如jssha,因为我的代码应该在多个平台下运行等等。二进制文件处理是强制性要求 错在哪里 节点 jssha 更新 Node和jsSha的解决方案是我下面的答案。看起来所有SHA-1的JS实现在处理二进制数据时都有点不同 我找到了Node和jsSHA的解决方案 节点 jsSHA 今后,请确保提供足够的信息,以100%再现问题。在本例中,与其使用readFileSync,不如为缓冲区实例提供一

当我调用带有文本文件的工具时,一切正常。但是当我通过二进制的时候,结果总是不同的。 我必须使用一些js库,比如jssha,因为我的代码应该在多个平台下运行等等。二进制文件处理是强制性要求

错在哪里

节点

jssha

更新


Node和jsSha的解决方案是我下面的答案。看起来所有SHA-1的JS实现在处理二进制数据时都有点不同

我找到了Node和jsSHA的解决方案

节点

jsSHA


今后,请确保提供足够的信息,以100%再现问题。在本例中,与其使用readFileSync,不如为缓冲区实例提供一组不起作用的字节。这样我就可以确保我的回答正确地解决了你的问题。我使用了几个文件来检查散列,但忘记了我应该使用一些缓冲区
var crypto = require('crypto')
  , shasum = crypto.createHash('sha1');
var fs = require('fs');
var args = process.argv.slice(2);


console.time('readFile');
var data = fs.readFileSync(args[0],'utf8').toString();
console.timeEnd('readFile');

console.time('sha1');
shasum.update(data);
var hash = shasum.digest('base64');
console.timeEnd('sha1');

console.log(hash);
var jsSHA = require('jssha')
var fs = require('fs');
var args = process.argv.slice(2);

console.time('readFile');
var data = fs.readFileSync(args[0],'utf8').toString();
console.timeEnd('readFile');

console.time('sha1');
var shaObj = new jsSHA(data, "TEXT");
var hash = shaObj.getHash("SHA-1", "B64");
console.timeEnd('sha1');

console.log(hash);
var crypto = require('crypto')
  , shasum = crypto.createHash('sha1');
var fs = require('fs');
var args = process.argv.slice(2);


console.time('readFile');
var data = fs.readFileSync(args[0]);
console.timeEnd('readFile');

console.time('sha1');
shasum.update(data);
var hash = shasum.digest('base64');
console.timeEnd('sha1');

console.log(hash);
var jsSHA = require('jssha')
var fs = require('fs');
var args = process.argv.slice(2);

console.time('readFile');
var data = fs.readFileSync(args[0]).toString('hex');
console.timeEnd('readFile');

console.time('sha1');
var shaObj = new jsSHA(data, "HEX");
var hash = shaObj.getHash("SHA-1", "B64");
console.timeEnd('sha1');

console.log(hash);