Validación de contraseña en Python

Tomemos una contraseña como una combinación de caracteres alfanuméricos junto con caracteres especiales y verifiquemos si la contraseña es válida o no con la ayuda de algunas condiciones.

Las condiciones para una contraseña válida son:

  1. Debe tener al menos un número.
  2. Debe tener al menos un carácter en mayúscula y uno en minúscula.
  3. Debe tener al menos un símbolo especial.
  4. Debe tener entre 6 y 20 caracteres.
Input :  Geek12#
Output : Password is valid.

Input :  asd123
Output : Invalid Password !!

Podemos verificar si una string dada es elegible para ser una contraseña o no usando varias formas.

Método n. ° 1: método ingenuo (sin usar Regex).

# 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()
Producción:

Password is valid

Este código usaba funciones booleanas para comprobar si todas las condiciones se cumplían o no. Vemos que aunque la complejidad del código es básica, la longitud es considerable.
 
Método #2: Usar expresiones regulares

compile()El método del módulo Regex crea un objeto Regex, lo que permite ejecutar funciones de expresiones regulares en la variable pat . Luego verificamos si el patrón definido por pat es seguido por la string de entrada passwd . Si es así, el método de búsqueda devuelve true , lo que permitiría que la contraseña sea válida.

# 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()
Producción:

Password is valid.

Publicación traducida automáticamente

Artículo escrito por dkp1903 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *