2015-01-14 14 views
5

voglio generare una password hash salata e conservarla in collezione MongoDB chiamati utenti, in questo modo:Salva password come hash salata in MongoDB in collezione utenti usando python - bcrypt

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

Ho creato una classe denominata Utenti in python script in cui voglio generare e archiviare quella password hash in mongodb, ma non sono sicuro di come generare quella password hash con bcrypt e poi quando accedo all'applicazione web del flask per verificare se l'hash corrisponde all'hash password memorizzata in mongodb prima

risposta

4

non so come si usa MongoDB per portare i dati, ma se si vuole hash il pass E 'facile come:

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) 
} 

E poi se si desidera controllare la password, è possibile utilizzare la funzione di check_password_hash():

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

non ricevo molto bene, quindi vuol dire primo assegno variabile ad esempio password = "james123" di me che utilizzo generate_password_hash (password), se ho capito bene, come posso aggiungere alt a questa password o questo metodo lo farà automaticamente ??? – devend

+0

Intendi il codice salato? Questa funzione wrapper lo fa automaticamente. –

+0

sì, ho chiesto il sale, ma ora so di quell'involucro. Grazie che ha funzionato perfettamente! – devend

1

Generare un sale utilizzando bcrypt e tenerlo salvato nel file delle impostazioni:

import bcrypt 
salt = bcrypt.gensalt() 

per crittografare la password:

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

Controllo del sale generato:

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

Per verificare se una determinata password corrisponde a quello generato (basta creare una hash della password usando il sale e confrontalo con quello sul database):

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 
Problemi correlati