Нужен алгоритм проверки сложности пароля - 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;
}