2015-01-14 14 views
5

I Want để tạo ra một mật khẩu băm ướp muối và lưu trữ nó trong bộ sưu tập MongoDB gọi người dùng, như thế này:tiết kiệm mật khẩu như băm ướp muối trong MongoDB trong bộ sưu tập người dùng sử dụng python - bcrypt

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

Tôi tạo ra một lớp được gọi là Người dùng trong kịch bản python nơi tôi muốn tạo và lưu trữ mật khẩu băm đó trong mongodb, nhưng tôi không chắc chắn cách tạo mật khẩu băm đó bằng bcrypt và sau đó khi tôi đăng nhập vào ứng dụng web của tôi để kiểm tra xem băm có khớp với băm không mật khẩu bạn đã lưu trữ trong mongodb trước

Trả lời

4

Tôi không biết làm thế nào bạn sử dụng MongoDB để mang lại các dữ liệu, nhưng nếu bạn muốn băm đèo nó dễ dàng như:

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

Và sau đó nếu bạn muốn kiểm tra mật khẩu, bạn có thể sử dụng chức năng check_password_hash():

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

Tôi không nhận được nó rất tốt, vì vậy bạn có nghĩa là trước tiên tôi chỉ định biến ví dụ mật khẩu = "james123" hơn tôi sử dụng generate_password_hash (mật khẩu), nếu tôi hiểu nó tốt, làm thế nào tôi có thể thêm alt vào mật khẩu này hoặc phương pháp này sẽ làm điều đó tự động? – devend

+0

Bạn có nghĩa là mã muối? Hàm wrapper này tự động thực hiện. –

+0

vâng tôi đã yêu cầu muối, nhưng bây giờ tôi biết về wrapper đó. Cảm ơn bạn đã làm việc hoàn hảo! – devend

1

Tạo muối bằng bcrypt và giữ nó trong tệp cài đặt của bạn:

import bcrypt 
salt = bcrypt.gensalt() 

Để mã hóa mật khẩu:

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

Kiểm tra muối tạo:

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

Để kiểm tra xem một mật khẩu cho phù hợp với một bạn tạo ra (chỉ cần tạo một băm mật khẩu bằng cách sử dụng muối và so sánh nó với mật khẩu trên cơ sở dữ liệu):

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 
Các vấn đề liên quan