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

Text

$[algorithm]$[cost]$[salt][hash]
ad esempio

Text

$2b$10$takTHpjNNPEhUX9lbenf.eAiF1Goin5nGo4SH1KOXHee8u9phtyha
Tags:
JavaScript184 NodeJs21 TypeScript15
Potrebbe interessarti anche: