Ответ 1
Я не могу взять кредит, так как я украл это из здесь
using System.Text;
using System.Text.RegularExpressions;
public enum PasswordScore
{
Blank = 0,
VeryWeak = 1,
Weak = 2,
Medium = 3,
Strong = 4,
VeryStrong = 5
}
public class PasswordAdvisor
{
public static PasswordScore CheckStrength(string password)
{
int score = 0;
if (password.Length < 1)
return PasswordScore.Blank;
if (password.Length < 4)
return PasswordScore.VeryWeak;
if (password.Length >= 8)
score++;
if (password.Length >= 12)
score++;
if (Regex.Match(password, @"/\d+/", RegexOptions.ECMAScript).Success)
score++;
if (Regex.Match(password, @"/[a-z]/", RegexOptions.ECMAScript).Success &&
Regex.Match(password, @"/[A-Z]/", RegexOptions.ECMAScript).Success)
score++;
if (Regex.Match(password, @"/.[!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]/", RegexOptions.ECMAScript).Success)
score++;
return (PasswordScore)score;
}
}
Обратите внимание на использование регулярного выражения для проверки символов верхнего регистра. Это похоже на достойный подход, поскольку он проверяет длину, использование символов верхнего и нижнего регистра, числовых цифр и специальных символов.
** Обновление **
Я знаю, что вопрос теперь закрыт, но я могу добавить больше объяснений для VoidKing, чтобы понять некоторые из концепций.
PasswordScore возвращается из метода CheckStrength, который может использоваться как условие того, что делать дальше в вашем коде.
Здесь представлена непроверенная демонстрация того, как можно использовать вышеуказанный код:
String password = "MyDummy_Password"; // Substitute with the user input string
PasswordScore passwordStrengthScore = PasswordAdvisor.CheckStrength(password);
switch (passwordStrengthScore) {
case PasswordScore.Blank:
case PasswordScore.VeryWeak:
case PasswordScore.Weak:
// Show an error message to the user
break;
case PasswordScore.Medium:
case PasswordScore.Strong:
case PasswordScore.VeryStrong:
// Password deemed strong enough, allow user to be added to database etc
break;
}
В этом случае перечисления используются как средство классификации силы пароля в удобочитаемые группы. Сохраняет код в чистоте и делает очевидным, что происходит в коде.
Что касается использования регулярных выражений, если вы не знакомы с их концепцией и как и когда их использовать, я предлагаю сделать некоторые исследования, поскольку они могут быть полезны во многих разных сценариях для проверки шаблонов в строках. Возможно, начните здесь.