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.