Генератор случайных паролей на C#
Приветствую! Здесь вы наверняка найдете, что ищете. Примеры в лаборатории рассчитаны на то, что мы разбираем что-то конкретное.
Текущая статья посвящена генератору случайных паролей на C# — криптостойкие строки и настройка алфавита.
Поэтому за теорией по текущей теме вам — в энциклопедию. Если ещё не погружались, то маршрут прост:
- Основы
- Система и сеть
- Данные и разметка
- Код и разработка
- Языки
- Искусственный интеллект
- Проект
- Инфраструктура и безопасность
- Спин-офф
Обязательно пройдитесь.
А теперь приступим к нашему предмету.
Генератор случайных паролей на C#
Генератор случайных паролей — это утилита, создающая строки с заданными криптографическими свойствами: длина, наличие заглавных и строчных букв, цифр, специальных символов. Такой инструмент полезен при регистрации на сайтах, создании тестовых учётных записей или автоматизации задач безопасности.
Базовая реализация
Простейший генератор использует класс Random и набор допустимых символов:
Эта реализация проста, но имеет ограничения:
- Использует предсказуемый генератор
Random, не подходящий для криптографических целей. - Не гарантирует наличие всех типов символов (например, может не включить цифры).
Безопасная реализация с криптографической стойкостью
Для генерации надёжных паролей применяется RandomNumberGenerator, входящий в состав Система.Безопасность.Cryptography. Он использует источники энтропии операционной системы.
Расширенная версия с настройками через объект
Для удобства можно обернуть параметры в отдельный класс:
Использование:
var options = new PasswordOptions
{
Length = 20,
IncludeSpecial = true,
CustomSpecialChars = "!@#"
};
string pwd = AdvancedPasswordGenerator.Generate(options);
Console.WriteLine(pwd);
Особенности реализации
- Криптографическая безопасность: используется
RandomNumberGenerator, а неRandom. - Гарантированное содержание символов: если включён определённый класс символов, он обязательно присутствует в результате.
- Перемешивание: предотвращает предсказуемое расположение обязательных символов.
- Гибкость: поддержка пользовательских наборов специальных символов.
- Валидация входных данных: проверка корректности длины и непустоты набора символов.