Generare una password hash in NodeJS
Con NodeJs è possibile generare un hash partendo da una password tramite la libreria bcrypt.
La generazione di un hash partendo da una password, torna utile quando si devono memorizzare le password su un database con un algoritmo non reversibile (hash).
ad esempio
La generazione di un hash partendo da una password, torna utile quando si devono memorizzare le password su un database con un algoritmo non reversibile (hash).
Installazione
Per usarla va installata conDOS / Batch file
npm i bcrypt
Creazione hash
L'hash può essere generato con il metodo bcrypt.hash(plainText, saltRounds)JavaScript
const bcrypt = require('bcrypt');
const createHash = async (plainText) => {
const saltRounds = 10;
const hash = await bcrypt.hash(plainText, saltRounds);
return hash;
};
il metodo genera un hash creando un salt casuale.
Verifica hash
La verifica della password con l'hash può essere fatta tramite il metodo bcrypt.compare(plainText, hashAndSalt)JavaScript
const bcrypt = require('bcrypt');
const verifyHash = async (plainText, hashAndSalt) => {
const ok = await bcrypt.compare(plainText, hashAndSalt);
return ok
};
Uso
Possono essere usati in questo modoJavaScript
(async () => {
const password = 'aaa123';
// genero l'hash partendo dalla password
const hs = await createHash(password);
console.log('Hash: %s', hs);
// verifico se la passweord coincide con l'hash
const valid = await verifyHash(password, hs)
console.log('Valid: %s', valid); // true
const valid2 = await verifyHash('bbb12', hs)
console.log('Valid: %s', valid2); // false
})();
Note
L'hash generato sarà nella formaText
$[algorithm]$[cost]$[salt][hash]
Text
$2b$10$takTHpjNNPEhUX9lbenf.eAiF1Goin5nGo4SH1KOXHee8u9phtyha