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

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

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

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

1 ответ

Решение

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

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

Для Node.js v5.11.1 и ниже

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

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

Если вы хотите быть чистым, вы можете проверить, from существует:

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
}
Другие вопросы по тегам