[英]SHA1 libraries - different hash on same binary file
当我用文本文件调用该工具时,一切正常。 但是,当我通过二进制值时,结果总是不同的。 我必须使用jssha之类的js库,因为我的代码应在多个平台等下运行。二进制文件处理是强制性要求。
错误在哪里?
节点
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);
更新资料
下面是我对Node和jsSha的解决方案。 看起来SHA-1的所有JS实现在处理二进制数据时都有些不同。
我已经找到了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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.