const crypto = require('crypto');
const hash = (password) => {
console.log('start');
const salt = crypto.randomBytes(16).toString('hex');
console.log(salt);
const hash = crypto
.pbkdf2Sync(
new Buffer.alloc(password.length),
new Buffer.alloc(salt.length),
1000,
64,
'sha512'
)
.toString('hex');
console.log(hash);
};
hash('hello world');
Это сработало для меня, по сути, alloc
ищет количество байтов (размер для выделения в памяти), строка здесь не работает.
Если вы хотите используйте password
и salt
в качестве заполненных буферов (со значениями), затем используйте второй аргумент (fill
) в случае пароля: new Buffer.alloc(password.length, password)
.
Вместо этого используйте .length
чтобы вернуть количество байтов (размер строки), это сгенерировало «правильный» вывод:
start
55387a56bd8ff87ac05be698d938ef04
ab3d65e9e6341a924c752a77b8dc6b78f1e6db5d31df7dd0cc534039dd9662a97bcaf0b959fe78248a49859c7952ddb25d66840f052b27ef1ab60b9446c0c9fd
Ref: https://nodejs.org/api/buffer.html#buffer_class_method_buffer_alloc_size_fill_encoding