UNPKG

password-generator-libry

Version:

quality generation of strong passwords

76 lines (57 loc) 2.77 kB
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;