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
}