2015-01-14 2 views
5

bcryptの私は塩漬けハッシュパスワードを生成し、ユーザーと呼ばれるMongoDBのコレクションにそれを保存したい、このように:のpythonを使用して、ユーザーのコレクションの中にMongoDBに塩漬けハッシュとしてパスワードを保存 -

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

私はユーザーと呼ばれるクラスを作成しました私は生成し、mongodbでハッシュされたパスワードを格納するpythonスクリプトでは、しかし、私はbcryptを使用してハッシュパスワードを生成する方法がわからないし、ハッシュとハッシュ一致するかどうかを確認する私のフラスコのWebアプリにログインする前にmongodbに保存したパスワード

答えて

4

私はあなたのデータを持って来るためにはMongoDBを使用する方法がわからない、しかし、あなたがパスをハッシュしたい場合には、同じように簡単です:あなたは、パスワードを確認したい場合は、その後、

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

そして、あなたはcheck_password_hash()関数を使うことができます:

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

私はとてもうまくいきません。私はそれをよく理解していれば、私はこのパスワードにaltを追加することができますか、このメソッドは自動的にそれを行うでしょうか?(パスワードを使用するよりも、パスワード= "james123" generate_password_hash – devend

+0

あなたは塩のコードを意味しますか?このラッパー関数は自動的にそれを行います。 –

+0

私は塩を求めましたが、今はラッパーについて知っています。完璧に働いてくれてありがとう! – devend

1

bcryptを使用して塩を生成し、設定ファイルに保存しておいてください。

import bcrypt 
salt = bcrypt.gensalt() 

パスワードを暗号化するには、次の指定したパスワードが生成された1(ちょうど作成と一致するかどうかを確認するに

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

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

を生成塩をチェック塩を使用してパスワードのハッシュを作成し、データベース上のパスワードと比較してください)。

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 
関連する問題