Нужен алгоритм проверки сложности пароля - C#

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

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

подскажите пожалуйста что исправить в коде чтобы он выполнял все условия 1. пароль должен быть длинее 3 символов 2. содержать не менее 3 уникальных символов 3. содержать хотя бы 1 символ и 1 цифру 4. не содержать пробелов 5. не являться датой
 static bool CheckPassword(string Password)
        {
            if (Password.Length < 3) return false;
 
            List<char> diffLetters = new List<char>();
            bool bHasLetters = false;
            for (int i = 0; i < Password.Length; i++)
            {
                char symbool = Password[i];
                if (char.IsNumber(symbool)) bHasLetters = true;
                if (char.IsLetter(symbool)) bHasLetters = true;
 
                if (diffLetters.Contains(symbool) == false)
                {
                    diffLetters.Add(symbool);
                }
                if (Convert.ToString(symbool) != " ") return true;
            }
 
            try
            {
                DateTime data1 = Convert.ToDateTime(Password);
            }
            catch (Exception e)
            {
                Console.WriteLine("Нельзя использовать дату для пароля");
                return false;
            }

            if (bHasLetters == false) return false;
            if (diffLetters.Count <= 3) return false;
            return true;
        }

Решение задачи: «Нужен алгоритм проверки сложности пароля»

textual
Листинг программы
        static bool checkPassword(string password)
        {
            if (password.Length < 3)
                return false;
 
            var distinctSymbols = new List<char>();
            bool hasDigits = false;
            bool hasLetters = false;
            bool hasSpase = false;
 
            foreach (var symbol in password)
            {
                if (!hasDigits && char.IsDigit(symbol))
                    hasDigits = true;
                if (!hasLetters && char.IsLetter(symbol))
                    hasLetters = true;
                if (!hasSpase && symbol == ' ')
                    hasSpase = true;
 
                if (!distinctSymbols.Contains(symbol))
                    distinctSymbols.Add(symbol);
            }
 
            if (distinctSymbols.Count < 3)
                return false;
 
            if (hasSpase)
                return false;
 
            if (!hasLetters || !hasDigits)
                return false;
 
            DateTime dt;
            if (!DateTime.TryParse(password, out dt))
                return false;
 
            return true;
 
        }

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


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

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

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