Generador de contraseñas en Nodejs
En este código se define una función llamada generarPassword
que sirve para generar contraseñas aleatorias. La función acepta tres parámetros: passwordLen
que indica la longitud de la contraseña que se quiere generar, hasSpecialChars
que indica si la contraseña debe incluir caracteres especiales como "!@#$%", y hasUpperCase
que indica si la contraseña debe incluir letras mayúsculas.
La función utiliza un conjunto de caracteres que se pueden incluir en la contraseña y, a partir de ellos, genera una contraseña aleatoria que cumple con los requisitos indicados por los parámetros.
Además, se utiliza la biblioteca yargs
para permitir que los parámetros se puedan pasar desde la línea de comandos al momento de ejecutar el script.
const yargs = require('yargs');
function generarPassword(passwordLen = 12, hasSpecialChars = true, hasUpperCase = true, hasLowerCase = true, hasNumbers = true) {
const specialChars = '!@#$%^&*()_-+={}[];:"|<>,.?/~`';
const uppercaseLetters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
const lowercaseLetters = 'abcdefghijklmnopqrstuvwxyz';
const numbers = '0123456789';
let allowedChars = '';
let password = '';
if (hasSpecialChars) {
allowedChars += specialChars;
password += randomChar(specialChars);
}
if (hasUpperCase) {
allowedChars += uppercaseLetters;
password += randomChar(uppercaseLetters);
}
if (hasLowerCase) {
allowedChars += lowercaseLetters;
password += randomChar(lowercaseLetters);
}
if (hasNumbers) {
allowedChars += numbers;
password += randomChar(numbers);
}
for (let i = password.length; i < passwordLen; i++) {
password += randomChar(allowedChars);
}
return password;
}
function randomChar(characters) {
const index = Math.floor(Math.random() * characters.length);
return characters.charAt(index);
}
const argv = yargs
.option('passwordLen', {
alias: 'l',
describe: 'Password length',
type: 'number',
default: 12
})
.option('hasSpecialChars', {
alias: 's',
describe: 'Include special characters',
type: 'boolean',
default: true
})
.option('hasUpperCase', {
alias: 'u',
describe: 'Include uppercase letters',
type: 'boolean',
default: true
})
.option('hasLowerCase', {
alias: 'c',
describe: 'Include lowercase letters',
type: 'boolean',
default: true
})
.option('hasNumbers', {
alias: 'n',
describe: 'Include numbers',
type: 'boolean',
default: true
})
.help()
.alias('help', 'h')
.argv;
const password = generarPassword(
argv.passwordLen,
argv.hasSpecialChars,
argv.hasUpperCase,
argv.hasLowerCase,
argv.hasNumbers
);
console.log(password);
Comentarios
Publicar un comentario