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