You are currently viewing Проверка пароля в Python

Проверка пароля в Python

Давайте возьмем пароль в виде комбинации буквенно-цифровых символов вместе со специальными символами и проверим, является ли пароль действительным или нет, с помощью нескольких условий.

Условиями для действительного пароля являются:

  1. Должно быть хотя бы одно число.
  2. Должно быть по крайней мере один прописной и один строчный символ.
  3. Должен иметь по крайней мере один специальный символ.
  4. Длина должна составлять от 6 до 20 символов.
Вход : Geek12#
Вывод : Password is valid.

Вход : asd123
Вывод : Invalid Password !!

Способ № 1: Наивный метод (Без использования Регулярного выражения).

# Password validation in Python
# using naive method

# Function to validate the password
def password_check(passwd):
	
	SpecialSym =['$', '@', '#', '%']
	val = True
	
	if len(passwd) < 6:
		print('length should be at least 6')
		val = False
		
	if len(passwd) > 20:
		print('length should be not be greater than 8')
		val = False
		
	if not any(char.isdigit() for char in passwd):
		print('Password should have at least one numeral')
		val = False
		
	if not any(char.isupper() for char in passwd):
		print('Password should have at least one uppercase letter')
		val = False
		
	if not any(char.islower() for char in passwd):
		print('Password should have at least one lowercase letter')
		val = False
		
	if not any(char in SpecialSym for char in passwd):
		print('Password should have at least one of the symbols $@#')
		val = False
	if val:
		return val

# Main method
def main():
	passwd = 'Geek12@'
	
	if (password_check(passwd)):
		print("Password is valid")
	else:
		print("Invalid Password !!")
		
# Driver Code		
if __name__ == '__main__':
	main()

Выход:

Password is valid

В этом коде использовались логические функции для проверки того, были ли выполнены все условия или нет. Мы видим, что, хотя сложность кода является базовой, его длина значительна.

Способ № 2: С помощью регулярное выражение

compile() метод модуля регулярных выражений создает объект регулярных выражений, позволяющий выполнять функции регулярных выражений на похлопывать переменная. Затем мы проверяем, соответствует ли шаблон, определенный похлопывать за ним следует строка ввода passwd. Если это так, метод поиска возвращает истинный, что позволит паролю быть действительным.

# importing re library
import re

def main():
	passwd = 'Geek12@'
	reg = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!#%*?&]{6,20}$"
	
	# compiling regex
	pat = re.compile(reg)
	
	# searching regex				
	mat = re.search(pat, passwd)
	
	# validating conditions
	if mat:
		print("Password is valid.")
	else:
		print("Password invalid !!")

# Driver Code	
if __name__ == '__main__':
	main()

Выход:

Password is valid.