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

Я выполнял хэширование паролей с солью, поэтому я сгенерировал соль как двоичную, hashed пароль, 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 и pass '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
    buf = new Buffer(b64string, 'base64'); // Ta-da
}