Ответ 1
base64:
const hash = crypto.createHash('sha256').update(pwd).digest('base64');
шестигранный:
crypto.createHash('sha256').update('password').digest('hex');
Я пытаюсь хэшировать переменную в NodeJS так:
var crypto = require('crypto');
var hash = crypto.createHash('sha256');
var code = 'bacon';
code = hash.update(code);
code = hash.digest(code);
console.log(code);
Но похоже, что я неправильно понял документы, поскольку console.log не регистрирует хешированную версию бекона, а только некоторую информацию о SlowBuffer.
Каков правильный способ сделать это?
base64:
const hash = crypto.createHash('sha256').update(pwd).digest('base64');
шестигранный:
crypto.createHash('sha256').update('password').digest('hex');
Подобно ответам выше, но это показывает, как сделать несколько записей; например, если вы читаете построчно из файла, а затем добавляете каждую строку к вычислению хеша как отдельную операцию.
В моем примере я также обрезаю новые строки/пропускаю пустые строки (необязательно):
const {createHash} = require('crypto');
// lines: array of strings
function computeSHA256(lines) {
const hash = createHash('sha256');
for (let i = 0; i < lines.length; i++) {
const line = lines[i].trim(); // remove leading/trailing whitespace
if (line === '') continue; // skip empty lines
hash.write(line); // write a single line to the buffer
}
return hash.digest('base64'); // returns hash as string
}
Я использую этот код, чтобы сгенерированные строки файла не редактировались кем-то вручную. Для этого я выписываю строки, добавляю строку типа sha256:<hash>
с суммой sha265, а затем, при следующем запуске, проверяю, что хеш этих строк соответствует указанной сумме sha265.
const crypto = require('crypto');
const hash = crypto.createHash('sha256');
hash.on('readable', () => {
const data = hash.read();
if (data) {
console.log(data.toString('hex'));
// Prints:
// 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50
}
});
hash.write('some data to hash');
hash.end();