Генерация пароля с помощью JavaScript
Первый вариант
Math.random() генерирует случайное число от 0(включительно) до 1(не включительно), то есть создается произвольное число с большим количеством знаков после запятой, например: 0.7642436524728753. Далее с помощью метода toString(36), полученное длинное число, переводится в строку. Самое интересное, что при переводе можно указывать основание системы счисления, которая будет использоваться при переводе числа. Таким образом, число превращается в набор символов и чисел, получится что-то подобное: 0.rigjv73pl7. И в конце с помощью метода slice() отрезается нужное количество символов. Если методу передать один отрицательный параметр, то отсчет символов будет с конца.
Когда все стало понятно, также стали очевидны и недостатки кода. Максимальное количество символов, которое может содержать пароль, это 10-11 штук. Также есть очень маленькая, даже практически невозможная, возможность получить ошибку. Ошибка произойдет, когда сгенерируется число 0, без длинного хвоста или когда сгенерируется 0.5 – такой вариант тоже возможен. Но эти недостатки ни сколько не принижают эстетическую красоту кода генерации пароля в одну строку:
var randomstring = Math.random().toString(36).slice(-8);Можно оформить код в небольшую функцию, которая будет генерировать пароль с заданым количеством символов:
function gen_password(len){ if(len > 10) len = 10; len = len * (-1); return Math.random().toString(36).slice(len); }
Второй вариант
Бывает необходимость генерировать пароли длиннее 10 символов, а также иногда необходимо использовать в пароле не только буквы и цифры, а еще и другие случайные символы. Для таких случаев можно воспользоваться этим способом:
function gen_password(len){ var password = ""; var symbols = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!№;%:?*()_+="; for (var i = 0; i < len; i++){ password += symbols.charAt(Math.floor(Math.random() * symbols.length)); } return password; }
Источник: сайт - Записки программиста - https://vk-book.ru/funkciya-dlya-generacii-parolya/