Я пытаюсь хэш-файл с помощью crypto
в nodejs. Вот что я сделал еще.Hasing файл больше, чем RAM в NodeJS
// generate a hash from file stream
var crypto = require('crypto'),
fs = require('fs'),
key = 'hehe';
// open file stream
var fstream = fs.createReadStream('path/to/file');
var hash = crypto.createHash('sha512', key);
hash.setEncoding('hex');
// once the stream is done, we read the values
fstream.on('end', function() {
hash.end();
// print result
console.log(hash.read());
});
// pipe file to hash generator
fstream.pipe(hash);
Все работает хорошо, но мне интересно, что будет, если файл я хочу хэширования будет больше, чем моя RAM?
Теоретически сейчас программа должна потерпеть крах, если файл будет больше, чем RAM. Моя текущая оперативная память - 10gb, и у меня нет файла большего размера, чем 10gb для тестирования.
Это файл _stream_, поэтому содержимое файла будет передаваться в виде блоков в хеширующую утилиту. Это будет отлично для файла, большего, чем то, что может поместиться в ОЗУ. – rafalio
@rafalio Что вы подразумеваете под файловым потоком? – Chris