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

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

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

подскажите пожалуйста что исправить в коде чтобы он выполнял все условия 1. пароль должен быть длинее 3 символов 2. содержать не менее 3 уникальных символов 3. содержать хотя бы 1 символ и 1 цифру 4. не содержать пробелов 5. не являться датой
Листинг программы
  1. static bool CheckPassword(string Password)
  2. {
  3. if (Password.Length < 3) return false;
  4. List<char> diffLetters = new List<char>();
  5. bool bHasLetters = false;
  6. for (int i = 0; i < Password.Length; i++)
  7. {
  8. char symbool = Password[i];
  9. if (char.IsNumber(symbool)) bHasLetters = true;
  10. if (char.IsLetter(symbool)) bHasLetters = true;
  11. if (diffLetters.Contains(symbool) == false)
  12. {
  13. diffLetters.Add(symbool);
  14. }
  15. if (Convert.ToString(symbool) != " ") return true;
  16. }
  17. try
  18. {
  19. DateTime data1 = Convert.ToDateTime(Password);
  20. }
  21. catch (Exception e)
  22. {
  23. Console.WriteLine("Нельзя использовать дату для пароля");
  24. return false;
  25. }
  26.  
  27. if (bHasLetters == false) return false;
  28. if (diffLetters.Count <= 3) return false;
  29. return true;
  30. }

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

textual
Листинг программы
  1.         static bool checkPassword(string password)
  2.         {
  3.             if (password.Length < 3)
  4.                 return false;
  5.  
  6.             var distinctSymbols = new List<char>();
  7.             bool hasDigits = false;
  8.             bool hasLetters = false;
  9.             bool hasSpase = false;
  10.  
  11.             foreach (var symbol in password)
  12.             {
  13.                 if (!hasDigits && char.IsDigit(symbol))
  14.                     hasDigits = true;
  15.                 if (!hasLetters && char.IsLetter(symbol))
  16.                     hasLetters = true;
  17.                 if (!hasSpase && symbol == ' ')
  18.                     hasSpase = true;
  19.  
  20.                 if (!distinctSymbols.Contains(symbol))
  21.                     distinctSymbols.Add(symbol);
  22.             }
  23.  
  24.             if (distinctSymbols.Count < 3)
  25.                 return false;
  26.  
  27.             if (hasSpase)
  28.                 return false;
  29.  
  30.             if (!hasLetters || !hasDigits)
  31.                 return false;
  32.  
  33.             DateTime dt;
  34.             if (!DateTime.TryParse(password, out dt))
  35.                 return false;
  36.  
  37.             return true;
  38.  
  39.         }

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


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

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

7   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы