PasswordStrengthCheker.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6. using System.Threading.Tasks;
  7. namespace UserRegistration
  8. {
  9. public class PasswordStrengthCheker
  10. {
  11. // Возвращает значение определяющее сложность пароля пользователя.
  12. public static int GetPasswordStrength(string password)
  13. {
  14. if (string.IsNullOrEmpty(password))
  15. {
  16. return 0;
  17. }
  18. int result = 0;
  19. // +1 балл за длину.
  20. if (Math.Max(password.Length, 7) > 7)
  21. {
  22. result++;
  23. }
  24. //+1 балл за наличие символа в нижнем регистре
  25. if (Regex.Match(password, "[a-z]").Success)
  26. {
  27. result++;
  28. }
  29. //+1 балл за наличие символа в верхнем регистре
  30. if (Regex.Match(password, "[A-Z]").Success)
  31. {
  32. result++;
  33. }
  34. // +1 балл за наличие числа.
  35. if (Regex.Match(password, "[0-9]").Success)
  36. {
  37. result++;
  38. }
  39. // +1 балл за наличие специального символа.
  40. if (Regex.Match(password,
  41. "[\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\{\\}\\[\\]\\:\\'\\;\\\"\\/\\?\\.\\>\\,\\<\\~\\`\\-\\\\_\\=\\+\\|]").Success)
  42. {
  43. result++;
  44. }
  45. return result;
  46. }
  47. }
  48. }