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
}