Hay varios módulos de Python que se usan para ocultar la contraseña ingresada por el usuario, entre ellos uno es el módulo maskpass() . En Python, con la ayuda del módulo maskpass() y el módulo base64() , podemos ocultar la contraseña de los usuarios con asterisco (*) durante el tiempo de entrada y luego, con la ayuda del módulo base64(), se puede cifrar.
pase de máscara()
maskpass() es un módulo de Python que se puede usar para ocultar las contraseñas de los usuarios durante el tiempo de entrada. Los módulos maskpass() también proporcionan una forma segura de manejar la solicitud de contraseña donde los programas interactúan con los usuarios a través de la terminal.
Instalación:
Use pip para instalar maskpass en el símbolo del sistema.
pip install maskpass
Estos módulos tienen 2 tipos de funciones/métodos:
- pedir pase()
- advpass()
pedir paso():
askpass usa la biblioteca estándar para obtener entradas sin bloqueo y devuelve la contraseña.
import maskpass pwd = maskpass.askpass()
La ejecución del código anterior devolverá la contraseña ingresada en un formato de string. Hay 2 argumentos opcionales en el método askpass(), que son ‘prompt’ y ‘mask’. El valor predeterminado para el aviso es ‘Ingresar contraseña:’ y el valor predeterminado para la máscara es asterisco (*).
Nota: si desea enmascarar su contraseña con una string, un número o un símbolo, simplemente pase ese valor en la máscara. Por ejemplo, si desea enmascarar su contraseña con el hashtag (#), pase el hashtag en la máscara, es decir, mask = «#», ahora, cuando el usuario ingrese la contraseña, esa contraseña se ocultará con el hashtag (#).
Ejemplo 1: sin hacer eco de la contraseña de un usuario en un aviso
Python3
# User's password without echoing import maskpass # to hide the password # masking the password pwd = maskpass.askpass(mask="") print(pwd)
Producción:
F:\files>python password.py Enter Password : greeksforgreeks
En el ejemplo anterior, la contraseña del usuario no se repite en un aviso al ingresar la contraseña porque el valor asignado en la máscara es nulo , es decir, máscara = «» (sin espacios), por lo tanto, la contraseña está oculta sin ninguna string, símbolo.
Ejemplo 2: Hacer eco de la contraseña del usuario en un aviso
Python3
# Echoing password and masked with hashtag(#) import maskpass # importing maskpass library # prompt msg = Password and # masking password with hashtag(#) pwd = maskpass.askpass(prompt="Password:", mask="#") print(pwd)
Producción:
F:\files>python password.py Password:############### greeksforgreeks
En el ejemplo anterior, la contraseña del usuario aparecerá en un aviso mientras ingresa la contraseña porque el valor asignado en la máscara es hashtag (#), es decir, máscara = «#», por lo tanto, cuando el usuario ingrese la contraseña, se ocultará con un hashtag(#).
advpass():
advpass usa pynput para obtener texto y devuelve la contraseña. advpass funciona tanto en la consola como en Spyder.
import maskpass pwd = maskpass.advpass()
Aquí también la ejecución del código anterior devolverá la contraseña ingresada en un formato de string. Hay 4 argumentos opcionales en el método advpass(), son ‘prompt’, ‘mask’, ‘ide’ y ‘suppress’.
- Aquí también el valor predeterminado para el mensaje es ‘Ingresar contraseña:’
- El valor predeterminado para máscara es asterisco (*).
- Aquí ide espera un valor booleano, es decir, verdadero o falso, el valor predeterminado de ide es False . No es necesario cambiar el valor de ide porque se comprueba automáticamente si se está ejecutando en IDE o terminal.
- suprimir también espera un valor booleano, es decir, verdadero o falso, se usa solo en el IDE de Spyder. Establecer esto como Verdadero evita que la entrada se pase al resto del sistema. Esto evita que la consola de Spyder salte hacia abajo cuando se presiona la barra espaciadora. El valor predeterminado para suprimir es Verdadero.
El método advpass() tiene una función reveladora que alternará la visibilidad de la contraseña ingresada por el usuario cuando se presiona la tecla Ctrl izquierda. Presione la tecla Ctrl izquierda nuevamente para enmascarar/ocultar la contraseña. Nota: Esto funciona solo con advpass() y necesita pynput.
Ejemplo 1: Sin presionar la tecla Ctrl izquierda al ingresar la contraseña
Python3
# Type password without left CTRL press key import maskpass # importing maskpass library # masking the password pwd = maskpass.advpass() print('Password : ', pwd)
Producción:
F:\files>python password.py Enter Password: *************** Password : greeksforgreeks
En el resultado anterior, la contraseña está oculta con el símbolo de asterisco (*) porque un usuario no ha presionado la tecla Ctrl izquierda en el teclado.
Ejemplo 2: Al presionar la tecla Ctrl izquierda mientras ingresa la contraseña:
Python3
# Type password without left CTRL press key import maskpass # importing maskpass library pwd = maskpass.advpass() # masking the password print('Password : ', pwd)
Producción:
F:\files>python password.py Enter Password: greeksforgreeks Password : greeksforgreeks
En el resultado anterior, la contraseña no está oculta porque un usuario presionó la tecla Ctrl izquierda en el teclado.
base64()
La función de codificación y decodificación base64 requiere un objeto similar a un byte. Para convertir una string en bytes, debemos codificar una string usando la función de codificación integrada de Python. Se utiliza principalmente la codificación UTF-8, también puede usar ‘ASCII’ para codificar, pero recomiendo usar la codificación UTF-8.
Python3
# encoding the string string = "greeksforgreek" # encoding string with utf-8 b = string.encode("UTF-8") print(b)
Producción:
F:\files>python strencode.py b'greeksforgreek'
aquí el prefijo b indica que el valor es un objeto de byte.
Codificando la string usando el módulo base64():
Para codificar la string, es decir, para convertir la string en código de bytes, utilice el siguiente método:
base64.b64encode(‘string’.encode(“utf-8”))
Decodificando el código de bytes usando el módulo base64():
Para decodificar el código de bytes, es decir, convertir el código de bytes nuevamente en una string, use el siguiente método:
base64.b64decode(‘código-byte’).decode(“utf-8”)
Ejemplo:
Python3
# importing base64 modules for # encoding & decoding string import base64 string = "GreeksforGreeks" # Encoding the string encode = base64.b64encode(string.encode("utf-8")) print("str-byte : ", encode) # Decoding the string decode = base64.b64decode(encode).decode("utf-8") print("byte-str : ", decode)
Producción:
F:\files>python base64.py str-byte : b'R3JlZWtzZm9yR3JlZWtz' byte-str : GreeksforGreeks
En el ejemplo anterior, «GreeksforGreeks», la string se codifica primero con el módulo base64, es decir, la string se convierte en un código de bytes y luego, con la ayuda del módulo base64, el código de bytes se decodifica nuevamente en su string original, es decir, «GreeksforGreeks».
Ocultar la contraseña del usuario durante el tiempo de entrada
Python3
# Hiding the inputted password with maskpass() # and encrypting it with use of base64() import maskpass # to hide the password import base64 # to encode and decode the password # dictionary with username # as key & password as value dict = {'Rahul': b'cmFodWw=', 'Sandeep': b'U2FuZGVlcA=='} # function to create password def createpwd(): print("\n========Create Account=========") name = input("Username : ") # masking password with prompt msg 'Password :' pwd = maskpass.askpass("Password : ") # encoding the entered password encpwd = base64.b64encode(pwd.encode("utf-8")) # appending username and password in dict dict[name] = encpwd # print(dict) # function for sign-in def sign_in(): print("\n\n=========Login Page===========") name = input("Username : ") # masking password with prompt msg 'Password :' pwd = maskpass.askpass("Password : ") # encoding the entered password encpwd = base64.b64encode(pwd.encode("utf-8")) # fetching password with # username as key in dict password = dict[name] if(encpwd == password): print("Successfully logged in.") else: print("Login Failed") # calling function createpwd() sign_in()
Producción:
F:\files>python "userLogin.py" ========Create Account========= Username : Rahulraj Password : ***** =========Login Page=========== Username : Rahulraj Password : ***** Successfully logged in.
Publicación traducida automáticamente
Artículo escrito por yadavrahulraj y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA