Node.js: generare una password robusta ma facile da ricordare

Node.js: generare una password robusta ma facile da ricordare

In Node.js è semplice generare una password robusta ma facile da ricordare.

A partire da un file contenente tutte le parole di un dizionario a scelta, genereremo una password che:

  • ha almeno un carattere speciale
  • ha una sequenza numerica
  • ha una o due parole
  • ha almeno una lettera maiuscola

La soluzione è la seguente:


'use strict';

module.exports = {
    password: () => {
        const fs = require('fs');
        return new Promise((resolve, reject) => {
            fs.readFile(__dirname + '/words', 'UTF-8', (err, words) => {
                if(err) {
                    reject(err);
                } else {
                    let wds = words.split(/\n/);
                    let specialChars = '@,-,_,$,%,&,(,),[,],{,},*,!,?'.split(',');
                    let randInt = Math.floor(Math.random() * 10000);
                    let specialCharsIndex = Math.floor(Math.random() * specialChars.length);


                    let specialChar = specialChars[specialCharsIndex];
                    let prefix = wds[Math.floor(Math.random() * wds.length)];
                    let suffix = wds[Math.floor(Math.random() * wds.length)];

                    let pwd = '';

                    if(randInt % 2 === 0) {
                        let pref = prefix.charAt(0).toUpperCase() + prefix.substr(1);
                        pwd = pref + randInt.toString() + specialChar + suffix;
                    } else {
                        let suff = suffix.charAt(0).toUpperCase() + suffix.substr(1);
                        pwd = prefix + randInt.toString() + specialChar + suff;
                    }


                    resolve(pwd);

                }
            });
        });
    }
};

Torna su