【问题标题】:SHA1 libraries - different hash on same binary fileSHA1 库 - 同一二进制文件上的不同哈希
【发布时间】:2015-05-29 17:34:40
【问题描述】:

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

错在哪里?

节点

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);

jssha

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);

更新

Node 和 jsSha 的解决方案是我在下面的回答。看起来 SHA-1 的所有 JS 实现对二进制数据的工作方式都有些不同。

【问题讨论】:

  • 今后,请确保提供足够的信息以 100% 重现问题。在这种情况下,最好不要使用readFileSync,而是为Buffer 实例提供一组不起作用的字节。这样我就可以确保我的回答正确地解决了您的问题。
  • 同意。我正在使用几个文件来检查哈希并忘记了我应该使用一些缓冲区

标签: javascript node.js encoding hash cryptography


【解决方案1】:

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

节点

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);

jsSHA

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 2012-02-05
    • 2011-11-02
    • 1970-01-01
    • 2013-11-19
    • 2011-05-18
    • 1970-01-01
    相关资源
    最近更新 更多