Определение качества введённого пароля - C#

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста написать программу для задачи (срочно, чтоб было понятно, что делал первокурсник) ) Генератор паролей Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или input.txt Вывод стандартный вывод или output.txt После ряда утечек конфиденциальной информации общественность всерьез задумалась о том, какие пароли следует использовать. Например, пароль «11111» — простой и его не следует использовать. Но как определить, хороший ли пароль? Фондом Стандартизации Бизнес-процессов было проведено исследование, показавшее, что хороший пароль должен быть достаточно длинным и содержать символы разных видов. Исследование показало, что в хорошем пароле должно быть ровно n символов. Пароль должен состоять из заглавных и строчных букв латинского алфавита и цифр и удовлетворять следующим требованиям: в пароле должно быть хотя бы a заглавных букв; в пароле должно быть хотя бы b строчных букв; в пароле должно быть хотя бы c цифр; в пароле не должно быть двух одинаковых идущих подряд символов. Понимая, что пользователям будет некомфортно придумывать пароль, удовлетворяющий всем этим требованиям, работники Фонда решили написать программу, призванную помочь пользователям в этом деле. Помогите Фонду, напишите программу, которая по заданным параметрам генерирует подходящий пароль. Формат ввода В первой строке входного файла задано целое число n — требуемая длина пароля (1 ≤ n ≤ 100). Во второй строке заданы неотрицательные целые числа a, b и c — минимальное необходимое число заглавных букв, строчных букв и цифр, соответственно (a + b + c ≤ n). Формат вывода В единственной строке выведите любой хороший пароль. Допустимо использовать только заглавные и строчные латинские буквы, а также цифры.

Решение задачи: «Определение качества введённого пароля»

textual
Листинг программы
static string[] alp = { "ABCDEFGHIJKLMNOPQARTUVWXYZ", "abcdefghijklmnopqrstuvwxyz", "0123456789" };
 
        const int a = 3, b = 3, c = 4, n = 10;
 
        static string GeneratePassword()
        {
 
            StringBuilder password = new StringBuilder();
            Random r = new Random();
 
            for (int i = 0; i<n; i++)
            {
                string alp1 = alp[r.Next(0, 3)];//Случайный выбор один из трех алфавитов
                password.Append(alp1[r.Next(0, alp1.Length)]);//Случайный выбор буквы из алфавита
            }
 
            return password.ToString();
        }
 
        static string GenerateGoodPassword()
        {
            string pass = "";
 
            if (n >= a + b + c)
            {
                while (pass.Count(x => char.IsUpper(x)) < a || pass.Count(x => char.IsLower(x)) < b || pass.Count(x => char.IsDigit(x)) < c)
                {
                    pass = GeneratePassword();
                }
            }
            else
                throw new Exception("Сумма чисел a, b, c должны быть меньше или равен n");
 
            return pass;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.286 из 5
Похожие ответы