Stronghold: генератор паролей прямо в браузере

24.03.2026
Stronghold: генератор паролей прямо в браузере

Пароли — одна из тех вещей, которые большинство людей придумывают на ходу: имя кота, год рождения, любимое слово с цифрой в конце. Это удобно, но небезопасно. Генератор паролей решает проблему: вместо «придумать» — «скопировать». Stronghold — это именно такой инструмент, реализованный как отдельный модуль на toolz.macrulez.ru.

Что умеет Stronghold

Модуль генерирует один или несколько паролей одновременно, позволяет гибко задать набор символов, длину и дополнительные ограничения, показывает оценку надёжности и даёт возможность скопировать или сохранить результат в файл. Всё работает в браузере — ни один символ не уходит на сервер.


Настройки генерации

Длина и количество

Два слайдера задают основные параметры:

Параметр Диапазон По умолчанию
Длина пароля 8 — 128 символов 16
Количество паролей 1 — 10 5

Генерировать сразу несколько вариантов удобно: можно выбрать тот, что лучше запоминается на слух, или просто взять первый.


Набор символов

Шесть независимых переключателей определяют пул символов, из которых собирается пароль:

Группа Символы
Заглавные латинские A – Z
Строчные латинские a – z
Цифры 0 – 9
Спецсимволы ! @ # $ % ^ & * ( ) - _ = + [ ] { } | ; : , . < > ? / ~ `
Кириллица прописная А – Я
Кириллица строчная а – я

Кириллица — нестандартный вариант: большинство сайтов её не принимают, но для локального хранения паролей или шифрования она увеличивает пространство символов и тем самым повышает надёжность.


Дополнительные опции

Три переключателя в разделе «Дополнительно» управляют поведением генератора:

Исключить неоднозначные символы
Убирает из пула символы, которые легко перепутать при ручном вводе: 0 и O, 1, l и I, | и `. Полезно, если пароль придётся когда-нибудь вводить с экрана или листка бумаги.

Гарантировать минимум из каждого набора
При случайной генерации не исключено, что пароль не будет содержать ни одной цифры, даже если цифры включены — просто не повезло со случайностью. Эта опция это исправляет: алгоритм проверяет результат и, если какой-то включённый набор не представлен, вставляет из него один символ в случайную позицию. Включена по умолчанию.

Без повторяющихся символов
Каждый символ в пароле будет уникален. Реализовано через алгоритм Фишера — Йетса: весь пул символов перемешивается случайным образом, затем берутся первые N символов. Актуально для коротких паролей или случаев, когда политика безопасности системы это требует. Если размер пула меньше заданной длины пароля — модуль покажет предупреждение.


Исключить конкретные символы

Поле ввода для символов, которых не должно быть в паролях. Типичный сценарий: сайт не принимает @ или " в паролях, хотя формально они включены в спецсимволы. Вместо отключения всей группы — просто указываем конкретные символы. Они убираются из всех групп до генерации, так что в пул не попадут ни прямым образом, ни через ключевые слова.


Ключевые слова

Необычная опция: пользователь вводит произвольный набор слов, а символы из этих слов вплетаются в сгенерированный пароль на равных интервалах. Это не делает пароль менее случайным — позиции остальных символов по-прежнему случайны, — но добавляет в пароль «зацепки», по которым его чуть проще опознать среди других.

Символы из слов предварительно фильтруются: если кириллица выключена, а слово написано по-русски, его символы в пул не попадут.


Индикатор надёжности

Над списком паролей отображается шкала с оценкой в битах энтропии. Энтропия вычисляется по формуле:

Copy
H = log₂(N) × L

где N — размер пула символов, L — длина пароля. Чем выше значение, тем сложнее пароль подобрать перебором.

Диапазон Уровень
менее 28 бит Очень слабый
28 – 35 бит Слабый
36 – 59 бит Средний
60 – 127 бит Сильный
128 бит и выше Очень сильный

Для справки: пароль из 16 символов с латиницей обоих регистров, цифрами и спецсимволами даёт около 105 бит энтропии — этого достаточно для большинства практических задач.

Шкала обновляется мгновенно при изменении любого параметра — можно в реальном времени видеть, как добавление группы символов или увеличение длины влияет на надёжность.


Результаты: скопировать и скачать

Копировать отдельный пароль — клик по любой строке с паролем копирует его в буфер обмена, всплывающее уведомление подтверждает действие.

Скопировать все — кнопка в правом нижнем углу копирует все сгенерированные пароли разделёнными переносами строк, удобно для вставки в менеджер паролей.

Скачать пароли — кнопка рядом готовит текстовый .txt-файл. В нём — не просто список паролей, а полный контекст:

Copy
Сгенерировано Stronghold.
https://toolz.macrulez.ru/ru/stronghold

Дата: 24.03.2026

Параметры генерации:
  Длина пароля: 16
  Количество паролей: 5
  Набор символов: Заглавные латинские (A–Z), Строчные латинские (a–z), Цифры (0–9), Спецсимволы (!@#…)
  Гарантировать минимум из каждого набора

Пароли:
  K#9mRx2vPqL@fN7j
  ...

Файл называется stronghold-ДД.ММ.ГГГГ.txt. Ссылка в шапке и все подписи параметров адаптируются под текущую локаль сайта: для русского интерфейса /ru/, для английского — /en/.


Реализация

Весь модуль работает в браузере без каких-либо обращений к серверу.

Генерация использует crypto.getRandomValues() — криптографически стойкий генератор псевдослучайных чисел, встроенный в Web Crypto API. Это важно: обычный Math.random() для паролей не подходит, его значения предсказуемы при знании начального состояния.

Алгоритм Фишера — Йетса применяется в режиме «без повторений» и для перемешивания позиций после принудительной вставки символов при опции «гарантировать минимум». Это исключает ситуацию, когда обязательные символы всегда оказываются в фиксированных позициях.

Гарантия минимума работает поверх основной генерации: после формирования базового пароля алгоритм проходит по всем включённым группам, находит отсутствующие и вставляет по одному символу из каждой в случайную свободную позицию. Затем незафиксированные позиции перемешиваются, чтобы расположение обязательных символов не было предсказуемым.

Интерфейс реализован на Vue 3 с Composition API. Все настройки реактивны — пароли пересчитываются мгновенно при изменении любого параметра без кнопки «сгенерировать».


Stronghold доступен на toolz.macrulez.ru вместе с другими модулями: Image Compressor, Tiny SVG, Gradient Fabric и Fav Icona.

Читать далее

28.03.2026

rest-pipeline-js 1.3.0: параллельность, middleware, пауза и экспорт состояния

Крупное обновление библиотеки для оркестрации REST API запросов. Параллельные шаги, глобальный middleware, pause/resume, экспорт и восстановление состояния — и заодно закрыт ряд неприятных багов, которые тихо жили в коде с самого начала.

Метки
javascripttypescriptrest-apipipelineopen-source
28.03.2026

responsive-media 1.1 — реактивные брейкпоинты, container queries и полный рефакторинг

Вышла новая версия библиотеки responsive-media. Полный рефакторинг на абстрактный базовый класс, container queries через ResizeObserver, богатый subscription API, хелперы для упорядоченных брейкпоинтов, готовые пресеты Tailwind / Bootstrap / Accessibility, интеграция с React 18+, синхронизация CSS-переменных, DOM-события и многое другое.

Метки
responsive-mediaTypeScriptVue 3Reactmedia queriesадаптивная вёрстка
28.03.2026

vue-i18n-kit — локализация для Vue 3 с ICU-плюрализацией, lazy loading и CLI

Написал собственный npm-пакет для локализации Vue 3, потому что устал каждый раз копировать один и тот же бойлерплейт из проекта в проект. ICU-плюрализация, lazy loading, метаданные локалей, форматирование дат и валют, Vite-плагин и CLI — всё из коробки.

Метки
vue3i18nlocalizationnpmopen-source