python mongodb hash flask bcrypt

guardar la contraseña como hash salado en mongodb en la colección de usuarios utilizando python-bcrypt



flask (2)

Genera una sal usando bcrypt y mantenla guardada en tu archivo de configuración:

import bcrypt salt = bcrypt.gensalt()

Para encriptar la contraseña:

password = "userpassword" hashed = bcrypt.hashpw(password, bcrypt.gensalt())

Comprobando la sal generada:

>>> print hashed $2a$12$C.zbaAxJPVVPKuS.ZvNQiOTVSdOf18kMP4qDKDnM3AGrNyGO5/tTy

Para verificar si una contraseña determinada coincide con la que generó (simplemente cree un hash de la contraseña usando el salt y compárela con la de la base de datos):

given_password = "password" hashed_password = bcrypt.hashpw(password, salt) #Using the same salt used to hash passwords on your settings hashed_password == hashed #In this case it returns false, because passwords are not the same

Quiero generar una contraseña de hash salada y almacenarla en la colección de mongodb llamada users, así:

users_doc = { "username": "james", "password": salted_hash_password }

Creé una clase llamada Users en Python Script donde quiero generar y almacenar esa contraseña hash en mongodb, pero no estoy seguro de cómo generar esa contraseña hash usando bcrypt y luego cuando inicio sesión en mi aplicación web matraz para comprobar si el hash coincide con la contraseña hash que almacenaste en mongodb antes


No sé cómo usas mongodb para traer los datos, pero si quieres hash el pase es tan fácil como:

from flask import Flask from flask.ext.bcrypt import Bcrypt app = Flask(__name__) bcrypt = Bcrypt(app) # Your code here... users_doc = { "username": "james", "password": bcrypt.generate_password_hash(password) }

Y luego, si desea verificar la contraseña, puede usar la función check_password_hash() :

bcrypt.check_password_hash(users_doc["password"], request.form["password"]) # Just an example of how you could use it.