Генератор случайных паролей на C#

Приветствую! Здесь вы наверняка найдете, что ищете. Примеры в лаборатории рассчитаны на то, что мы разбираем что-то конкретное.

Текущая статья посвящена генератору случайных паролей на C# — криптостойкие строки и настройка алфавита.

Поэтому за теорией по текущей теме вам — в энциклопедию. Если ещё не погружались, то маршрут прост:

  1. Основы
  2. Система и сеть
  3. Данные и разметка
  4. Код и разработка
  5. Языки
  6. Искусственный интеллект
  7. Проект
  8. Инфраструктура и безопасность
  9. Спин-офф

Обязательно пройдитесь.

А теперь приступим к нашему предмету.

Теория и соседние материалы

Генератор случайных паролей на C#

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


Базовая реализация

Простейший генератор использует класс Random и набор допустимых символов:

Эта реализация проста, но имеет ограничения:

  • Использует предсказуемый генератор Random, не подходящий для криптографических целей.
  • Не гарантирует наличие всех типов символов (например, может не включить цифры).

Безопасная реализация с криптографической стойкостью

Для генерации надёжных паролей применяется RandomNumberGenerator, входящий в состав Система.Безопасность.Cryptography. Он использует источники энтропии операционной системы.


Расширенная версия с настройками через объект

Для удобства можно обернуть параметры в отдельный класс:

Использование:

var options = new PasswordOptions
{
    Length = 20,
    IncludeSpecial = true,
    CustomSpecialChars = "!@#"
};

string pwd = AdvancedPasswordGenerator.Generate(options);
Console.WriteLine(pwd);

Особенности реализации

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