Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SecurityCheck:
- MIN_PASSWORD_LENGTH = 8
- LOGIN_LEFT_LENGTH = 4
- LOGIN_RIGHT_LENGTH = 25
- def __init__(self, login, password):
- self.login = login
- self.password = password
- # Пароль должен содержать не менее N символов
- def check_password_length(self):
- return len(self.password) >= self.MIN_PASSWORD_LENGTH
- # Длина логина должна быть не менее минимального и не более максимального значения
- def check_login_min_max_length(self):
- return self.LOGIN_LEFT_LENGTH <= len(self.login) <= self.LOGIN_RIGHT_LENGTH
- # Пароль должен состоять только из латинских букв и цифр
- def check_password_contains_only_symbol_digit(self):
- mask = "[a-zA-Z]{{1}}[a-zA-Z0-9]{{{length},}}$".format(length=self.MIN_PASSWORD_LENGTH)
- return len(re.findall(mask, self.password)) > 0
- # Пароль не должен содержать более трех располагающихся на соседних клавишах устройства ввода символов (в раскладке QWERTY)."
- def check_password_sequence_symbol(self):
- mass = ["qwertyuiop[]", "asdfghjkl;'", "zxcvbnm,./"]
- for item in mass:
- cur_string = item
- end = len(cur_string)
- for i in range(end):
- if i + 4 > end:
- continue
- cur_sub_string = cur_string[i: i + 4]
- if cur_sub_string in self.password or cur_sub_string[::-1] in self.password:
- return False
- return True
- # Пароль не должен содержать подряд более двух одинаковых символов
- def check_password_only_two_sequence_symbol(self):
- return len(re.findall('(\w)\\1{2,}', self.password)) == 0
- def run(self):
- self.check_login_min_max_length()
- self.check_password_contains_only_symbol_digit()
- self.check_password_length()
- self.check_password_only_two_sequence_symbol()
- self.check_password_sequence_symbol()
- if __name__ == '__main__':
- sc = SecurityCheck('admin', 'addmin123')
- print(sc.run())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement