NodeJS: как декодировать строку с кодировкой base64 обратно в двоичный файл? [дубликат]

этот вопрос уже есть ответ здесь:

я реализовывал хэширование паролей с помощью соли, поэтому я сгенерировал соль как двоичный файл, хэшировал пароль, base64 закодировал пароль и соль, а затем сохранил их в базе данных.

теперь, когда я проверяю пароль, я должен декодировать соль обратно в двоичные данные, использовать ее для хэша предоставленного пароля, base64 кодировать результат и проверять, соответствует ли результат в базе данных.

проблема в том, что я не могу найти метод декодирования соли обратно в двоичные данные. Я закодировал их с помощью буфера.toString метод, но, похоже, нет обратной функции.

1 ответов


по состоянию на узел.js v6.0.0 используя метод конструктора устарел и вместо этого следует использовать следующий метод для создания нового буфера из строки, закодированной в base64:

var b64string = /* whatever */;
var buf = Buffer.from(b64string, 'base64'); // Ta-da

Для Узла.js v5.11.1 и ниже

строительство новой Buffer и передать 'base64' в качестве второго аргумента:

var b64string = /* whatever */;
var buf = new Buffer(b64string, 'base64'); // Ta-da

если вы хотите быть чистым, вы можете проверить, является ли :

if (typeof Buffer.from === "function") {
    // Node 5.10+
    buf = Buffer.from(b64string, 'base64'); // Ta-da
} else {
    // older Node versions, now deprecated
    buf = new Buffer(b64string, 'base64'); // Ta-da
}