password-generator-libry
Version:
quality generation of strong passwords
76 lines (57 loc) • 2.77 kB
JavaScript
const readline = require('readline')
const passwordGenerator = {
generatePassword(length = 12, options = {}) {
const {
uppercase = true,
lowercase = true,
numbers = true,
symbols = true
} = options;
if (!uppercase && !lowercase && !numbers && !symbols) {
throw new Error("Выберите один из предложенных типов символов!");
}
const uppercaseChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
const lowercaseChars = 'abcdefghijklmnopqrstuvwxyz';
const numberChars = '1234567890';
const symbolChars = '!@#$%^&*()_+[]{}|;:,.<>?';
let characterPool = '';
if (uppercase) characterPool += uppercaseChars;
if (lowercase) characterPool += lowercaseChars;
if (numbers) characterPool += numberChars;
if (symbols) characterPool += symbolChars;
let password = '';
for (let i = 0; i < length; i++) {
const randomIndex = Math.floor(Math.random() * characterPool.length);
password += characterPool[randomIndex];
}
return password;
}
}
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Введите длину пароля: ", (lengthInput) => {
const length = parseInt(lengthInput, 10);
rl.question("Включить заглавные буквы? (yes/no): ", (uppercaseInput) => {
const uppercase = uppercaseInput.toLowerCase() === "yes" || uppercaseInput.toLowerCase() === "y";
rl.question("Включить строчные буквы? (yes/no): ", (lowercaseInput) => {
const lowercase = lowercaseInput.toLowerCase() === "yes" || lowercaseInput.toLowerCase() === "y";
rl.question("Включить цифры? (yes/no): ", (numbersInput) => {
const numbers = numbersInput.toLowerCase() === "yes" || numbersInput.toLowerCase() === "y";
rl.question("Включить специальные символы? (yes/no): ", (symbolsInput) => {
const symbols = symbolsInput.toLowerCase() === "yes" || symbolsInput.toLowerCase() === "y";
const options = { uppercase, lowercase, numbers, symbols };
try {
const password = passwordGenerator.generatePassword(length, options);
console.log("Сгенерированный пароль:", password);
} catch (error) {
console.error(error.message);
}
rl.close();
});
});
});
});
});
module.exports = passwordGenerator;