El cifrado de contraseñas enmascara las contraseñas de los usuarios para que resulten difíciles de adivinar o decodificar. Es un paso esencial en el desarrollo de software seguro para usuarios. Ya sea que esté construyendo uno con Flask u otro marco ligero de Python, no puede ignorar ese paso. Ahí es donde entra en juego bcrypt.
Le mostraremos cómo usar bcrypt para codificar su contraseña en Python.
Cómo funciona bcrypt
Bcrypt es una biblioteca de hash independiente del idioma que ofrece un cifrado de contraseña único. Al cifrar su cadena, genera caracteres aleatorios adicionales (sal) de forma predeterminada para reforzar la seguridad de su contraseña.
Opcionalmente, también puede especificar la cantidad de caracteres adicionales que desea agregar a una cadena entrante.
La biblioteca bcrypt no lee cadenas sin procesar, solo código de bytes. Entonces, para comenzar, primero codificará una cadena de contraseña entrante antes de pasarla a bcrypt para que la encripte.
Codificar no es lo mismo que encriptar. Solo garantiza que una cadena sea legible por máquina antes de que un algoritmo de cifrado pueda enmascararla.
Cifrar una contraseña en Python con bcrypt
El cifrado de contraseña de bcrypt es fácil con Python. Nos centraremos en cómo hacer esto sin utilizar un marco. Pero no se preocupe, sigue el mismo proceso en los marcos una vez que sepa cómo almacenar las entradas de sus usuarios y leerlas de la base de datos.
Instalar y configurar bcrypt
Si aún no lo ha hecho, activar un entorno virtual de Python en la raíz de su proyecto. Luego instale bcrypt usando pepita:
pip instalar bcrpyt
Comience a cifrar contraseñas
Una vez instalado, veamos cómo cifrar una cadena usando bcrypt:
# Importar bcrypt:
importar bcrypt
contraseña = "mypasswordstring"
# Codifique la contraseña en un código de bytes utf-8 legible:
contraseña = contraseña.encode ('utf-8')
# Hash la contraseña ecoded y genera una sal:
hashedPassword = bcrypt.hashpw (contraseña, bcrypt.gensalt ())
imprimir (hashedPassword)
Cuando usted ejecutar el código Python arriba, imprime una cadena de bytes cifrada. Sin embargo, la salida cambia cada vez que ejecuta el script. Así es como bcrypt garantiza que cada usuario tenga una contraseña cifrada de forma única.
Eso es para el cifrado de contraseña, por cierto.
Cómo comparar y confirmar contraseñas con bcrypt
¿Qué sucede si desea almacenar la contraseña hash y luego confirmar que coincide con la contraseña proporcionada por el usuario durante la autenticación?
Eso es fácil. Solo necesita comparar la contraseña de autenticación con la almacenada en la base de datos (o en la memoria en este caso).
Y dado que bcrypt solo lee cadenas de bytes, también deberá codificar la contraseña de autenticación antes de compararla con la de la base de datos. En esencia, verificará una entrada de autenticación codificada con la contraseña codificada con hash ya almacenada en su base de datos.
Usando entradas ficticias de Python, veamos cómo funciona esto en la práctica:
importar bcrypt
#almacenar su contraseña:
contraseña = str (entrada ("contraseña de entrada:"))
# Codifique la contraseña almacenada:
contraseña = contraseña.encode ('utf-8')
# Cifre la contraseña almacenada:
hash = bcrypt.hashpw (contraseña, bcrypt.gensalt (10))
# Cree un campo de entrada de contraseña de autenticación para verificar si un usuario ingresa la contraseña correcta:
check = str (input ("verificar contraseña:"))
# Codifique también la contraseña de autenticación:
check = check.encode ('utf-8')
# Utilice condiciones para comparar la contraseña de autenticación con la almacenada:
si bcrypt.checkpw (comprobar, hash):
print ("inicio de sesión exitoso")
demás:
imprimir ("contraseña incorrecta")
El código anterior le pide que ingrese una nueva contraseña cuando la ejecuta. Python almacena esto en la memoria. Luego, proporcionará la misma contraseña (que solo usted conoce) en el campo de autenticación.
Python imprime un mensaje de éxito si la contraseña comparada coincide con la cifrada almacenada previamente. De lo contrario, genera el mensaje fallido envuelto en el demás declaración:
Todo el concepto es el mismo que almacenar una contraseña en una base de datos durante el registro y proporcionarla más tarde durante la autenticación.
Escale el cifrado con bcrypt
Si bien solo hemos demostrado cómo funciona bcrypt al almacenar contraseñas cifradas en la memoria corta simple de Python, su uso final es en aplicaciones de base de usuarios de la vida real.
No obstante, este tutorial muestra las formas fundamentales de estructurar su código para lograr esto, incluso en escenarios de la vida real. Por ejemplo, si está usando Flask, puede reemplazar las entradas con formularios web separados para servir los campos de registro y autenticación. Y, por supuesto, almacenará contraseñas encriptadas en una base de datos de la vida real y las leerá cuando compare contraseñas.
Todo el mundo habla de cifrado, pero ¿se siente perdido o confundido? A continuación, se incluyen algunos términos de cifrado clave que debe conocer.
Leer siguiente
- Programación
- Pitón
- Programación
- Seguridad

Idowu es un apasionado de la tecnología inteligente y la productividad. En su tiempo libre, juega con la codificación y cambia al tablero de ajedrez cuando está aburrido, pero también le encanta romper con la rutina de vez en cuando. Su pasión por mostrarle a la gente el camino en torno a la tecnología moderna lo motiva a escribir más.
Suscríbete a nuestro boletín
¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!
Haga clic aquí para suscribirse