Advertisement
Guest User

Untitled

a guest
Mar 15th, 2017
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.31 KB | None | 0 0
  1. class SecurityCheck:
  2.     MIN_PASSWORD_LENGTH = 8
  3.     LOGIN_LEFT_LENGTH = 4
  4.     LOGIN_RIGHT_LENGTH = 25
  5.  
  6.     def __init__(self, login, password):
  7.         self.login = login
  8.         self.password = password
  9.  
  10.     # Пароль должен содержать не менее N символов
  11.     def check_password_length(self):
  12.         return len(self.password) >= self.MIN_PASSWORD_LENGTH
  13.  
  14.     # Длина логина должна быть не менее минимального и не более максимального значения
  15.     def check_login_min_max_length(self):
  16.         return self.LOGIN_LEFT_LENGTH <= len(self.login) <= self.LOGIN_RIGHT_LENGTH
  17.  
  18.     # Пароль должен состоять только из латинских букв и цифр
  19.     def check_password_contains_only_symbol_digit(self):
  20.         mask = "[a-zA-Z]{{1}}[a-zA-Z0-9]{{{length},}}$".format(length=self.MIN_PASSWORD_LENGTH)
  21.         return len(re.findall(mask, self.password)) > 0
  22.  
  23.     # Пароль не должен содержать более трех располагающихся на соседних клавишах устройства ввода символов (в раскладке QWERTY)."
  24.     def check_password_sequence_symbol(self):
  25.         mass = ["qwertyuiop[]", "asdfghjkl;'", "zxcvbnm,./"]
  26.  
  27.         for item in mass:
  28.             cur_string = item
  29.             end = len(cur_string)
  30.             for i in range(end):
  31.                 if i + 4 > end:
  32.                     continue
  33.                 cur_sub_string = cur_string[i: i + 4]
  34.                 if cur_sub_string in self.password or cur_sub_string[::-1] in self.password:
  35.                     return False
  36.         return True
  37.  
  38.     # Пароль не должен содержать подряд более двух одинаковых символов
  39.     def check_password_only_two_sequence_symbol(self):
  40.         return len(re.findall('(\w)\\1{2,}', self.password)) == 0
  41.  
  42.     def run(self):
  43.         self.check_login_min_max_length()
  44.         self.check_password_contains_only_symbol_digit()
  45.         self.check_password_length()
  46.         self.check_password_only_two_sequence_symbol()
  47.         self.check_password_sequence_symbol()
  48.  
  49.  
  50. if __name__ == '__main__':
  51.     sc = SecurityCheck('admin', 'addmin123')
  52.     print(sc.run())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement