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).

Installazione

Per usarla va installata con
DOS / 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 modo
JavaScript
(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 forma
$[algorithm]$[cost]$[salt][hash]
ad esempio
$2b$10$takTHpjNNPEhUX9lbenf.eAiF1Goin5nGo4SH1KOXHee8u9phtyha
Potrebbe interessarti anche: