web-dev-qa-db-fra.com

NodeJS: Comment décoder une chaîne encodée en base64 en binaire?

J'implémentais le hachage de mot de passe avec salt, j'ai donc généré salt en binaire, haché le mot de passe, base64 codé le mot de passe et salt puis les stocké dans une base de données.

Maintenant, lorsque je vérifie le mot de passe, je suis censé décoder le sel en données binaires, l'utiliser pour hacher le mot de passe fourni, base64 encoder le résultat et vérifier si le résultat correspond à celui de la base de données.

Le problème est que je ne trouve pas de méthode pour décoder le sel en données binaires. Je les ai encodés en utilisant la méthode Buffer.toString mais il ne semble pas y avoir de fonction inverse.

235
Xavier_Ex

À partir de Node.js v6.0.0 à l'aide de la méthode du constructeur est obsolète et la méthode suivante doit plutôt être utilisée pour construire un nouveau tampon à partir d'une chaîne encodée en base64:

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

Pour Node.js v5.11.1 et inférieur

Construire une nouvelle Buffer et passer 'base64' comme second argument:

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

Si vous voulez être propre, vous pouvez vérifier si from existe:

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
}
519
Matt Ball