Надежность пароля:
Во-первых, я прочитал о надежности пароля и дважды проверил вашу политику, чтобы убедиться, что вы делаете правильные вещи (я не могу сказать вам от руки):
Тогда я бы проверил другие вопросы:
Тогда я бы приступил к делу.
Реализация:
Вы можете использовать Linq:
return password.Length >= z
&& password.Where(char.IsUpper).Count() >= x
&& password.Where(char.IsDigit).Count() >= y
;
Вы можете использовать также регулярные выражения (которыеможет быть хорошим вариантом, позволяющим вам в будущем подключать более сложные проверки):
return password.Length >= z
&& new Regex("[A-Z]").Matches(password).Count >= x
&& new Regex("[0-9]").Matches(password).Count >= y
;
Или вы можете смешивать и сопоставлять их.
Если вам приходилось делать это несколько разВы можете повторно использовать Regex
экземпляры, создав класс:
public class PasswordValidator
{
public bool IsValid(string password)
{
return password.Length > MinimumLength
&& uppercaseCharacterMatcher.Matches(password).Count
>= FewestUppercaseCharactersAllowed
&& digitsMatcher.Matches(password).Count >= FewestDigitsAllowed
;
}
public int FewestUppercaseCharactersAllowed { get; set; }
public int FewestDigitsAllowed { get; set; }
public int MinimumLength { get; set; }
private Regex uppercaseCharacterMatcher = new Regex("[A-Z]");
private Regex digitsMatcher = new Regex("[a-z]");
}
var validator = new PasswordValidator()
{
FewestUppercaseCharactersAllowed = x,
FewestDigitsAllowed = y,
MinimumLength = z,
};
return validator.IsValid(password);