Нужен алгоритм проверки сложности пароля - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д