Генератор паролей на JavaScript
В данной записи я выкладываю код на JavaScript, который реализует генерацию случайных паролей.
Если вдруг у вас стоит задача сделать генерацию паролей, то это вполне годное готовое решение, которое можно очень легко переделать под любые нужды и задачи.
Оцените рабочий пример в демке и посмотрите код с решением данного примера.
Demo
Укажите какие символы включать в пароль:
- Цифры
- Английский строчные буквы
- Английский заглавные буквы
- Спецсимволы
Количество символов в пароле:
Сгенерированный пароль:
Код
В демонстрации я использовал следующий HTML
<p>Какие символы включать в пароль:</p>
<ul class="password__generate">
<li><input id="arr_num" type="checkbox" /> Цифры</li>
<li><input id="arr_en" type="checkbox" /> Английский строчные буквы</li>
<li><input id="arr_EN" type="checkbox" /> Английский заглавные буквы</li>
<li><input id="arr_symb" type="checkbox" /> Спецсимволы</li>
</ul>
<p>Количество символов в пароле: <input id="passLenght" type="number" step="1" min="4" max="20" value="7" /></p>
<p>Сгенерированный пароль: <span id="result"></span></p>
<p><button id="pass_start">Сгенерировать пароль</button></p>
А вот код JS:
let arr_num = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let arr_en = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
let arr_EN = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
let arr_symb = ['!', '@', '#', '$', '%', '?', '-', '+', '=', '~'];
const compareRandom = ( ) => Math.random() - 0.5;
const randomInteger = ( min, max ) => Math.round(min - 0.5 + Math.random() * (max - min + 1));
function generatePassword() {
let arr = [];
if (document.querySelector('#arr_num').checked) arr = arr.concat(arr_num);
if (document.querySelector('#arr_en').checked) arr = arr.concat(arr_en);
if (document.querySelector('#arr_EN').checked) arr = arr.concat(arr_EN);
if (document.querySelector('#arr_symb').checked) arr = arr.concat(arr_symb);
arr.sort(compareRandom);
let password = '';
let passLenght = document.querySelector('#passLenght').value;
for (let i = 0; i < passLenght; i++) {
password += arr[randomInteger(0, arr.length - 1)];
}
document.querySelector('#result').textContent = password;
}
document.querySelector('#pass_start').addEventListener('click', generatePassword);
Обратите внимание, что в числовом массиве отсутствует 0, а в массивах с алфавитом нет буквы O, это сделано намеренно, из за того что может быть путаница с этими символами, так как буква 'O' очень похожа на цифру '0'.
Данный js-код как и само решение можно легко подправить под любые нужды и задачи. Для наглядности я добавил настройки с разными параметрами для пароля, но думаю что не будет особых проблем их убрать.
Но если есть вопросы - не стесняйтесь задавать их в комментариях.
*** Войдите чтобы писать комментарии.