Получить правильный Kekkak256 загруженного файла в NodeJS
Я использую модуль keccak256 npm для вычисления хэша загруженного файла. Я проверяю правильность и вижу, что данный хэш не соответствует тем, которые сравниваются в некоторых онлайн-хеш-калькуляторах (таких как: этот или этот или этот).
Код, который я запускаю:
const express = require('express');
const fs = require('fs');
const keccak256 = require('keccak256');
const formidable = require('formidable'),
http = require('http'),
util = require('util');
const router = express.Router();
router.get('/', (req, res) => {
res.sendFile('index.html', {root: __dirname })
});
router.post('/upload', (req, res) => {
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files) {
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received upload saved in: ' + files.upload.path + '\n\n');
var readStream = fs.createReadStream(files.upload.path);
//res.write(readStream);
console.log(keccak256(readStream).toString('hex'))
res.end("");
});
return;
});
Может кто-нибудь любезно объяснить мне, где я не прав и как я могу это исправить?
1 ответ
Решено с помощью NPMsha-3
:
const express = require('express');
const fs = require('fs');
const formidable = require('formidable'),
http = require('http'),
util = require('util');
const { Keccak } = require('sha3');
const hash = new Keccak(256);
const router = express.Router();
router.get('/', (req, res) => {
res.sendFile('index.html', {root: __dirname })
});
router.post('/upload', (req, res) => {
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files) {
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received upload saved in: ' + files.upload.path + '\n\n');
var file = fs.readFileSync(files.upload.path);
hash.update(file);
console.log(hash.digest('hex'));
res.end("");
});
return;
});
Теперь все отлично работает.