2012-01-15 10 views
2
salt = 'yhnqazolr123098765' 
    password = bcrypt.hashpw(password,salt) 
    repeatpassword = bcrypt.hashpw(repeatpassword,salt) 

2行目にエラーが発生しました。bcrypt.hashpwのsaltを設定するにはどうしたらいいですか?

ValueError at /register 

Invalid salt 

Request Method:  POST 
Request URL: http://127.0.0.1:8000/register 
Django Version:  1.3.1 
Exception Type:  ValueError 
Exception Value:  

Invalid salt 

Exception Location:  /home/user1/djangoblog/blog/views.py in register, line 70 
Python Executable: /usr/bin/python 
Python Version:  2.6.6 
Python Path:  

['/home/user1/djangoblog', 
'/usr/lib/python2.6', 
'/usr/lib/python2.6/plat-linux2', 
'/usr/lib/python2.6/lib-tk', 
'/usr/lib/python2.6/lib-old', 
'/usr/lib/python2.6/lib-dynload', 
'/usr/local/lib/python2.6/dist-packages', 
'/usr/lib/python2.6/dist-packages', 
'/usr/lib/python2.6/dist-packages/gst-0.10', 
'/usr/lib/pymodules/python2.6', 
'/usr/lib/pymodules/python2.6/gtk-2.0'] 

どうすればよいですか? 毎回ランダムな塩ではなく、デフォルトの塩の値を設定する必要があります。私はproject pageで見つかった例のように、あなたはこのような何か必要な、と思い

答えて

2

:塩のため

salt = bcrypt.gensalt() 
password = bcrypt.hashpw(password, salt) 
repeatpassword = bcrypt.hashpw(repeatpassword,salt) 
+0

私がこれらを使用すると、 'password = bcrypt.hashpw(password、bcrypt.gensalt()); \t \t passwordrepeat = bcrypt.hashpw(passwordrepeat、bcrypt.gensalt()) 'password'と' passwordrepeat'は一致しないので、保存することはできません。 – shibly

+0

@guru同じ 'salt'を使う必要があれば、変数を使って' bcrypt.gensalt'の出力を保存することができます。私はそれを明確にするために私の答えを更新しました。 – jcollado

+0

しかし、それはランダムに作成された塩であるので、あなたはデータベーステーブルからパスワードを取得/取得し、ログインするために与えられたパスワードと比較すると、塩の値は同じになりますか? – shibly

2

形式は次のとおりです。

$Version$log2(NumRounds)$salt 

  • Versionは、2,
  • 0 <= log2(NumRounds) < 32,
  • saltは、22バイトの64エンコード文字列です。

代わりにbcrypt.gensalt()を使用することをおすすめします。あなた自身の塩を提供する正当な理由はありません。

+0

自身のsalt = Pythonシェルから 'bcrypt.gensalt()'を計算し、それをPythonコードで静的なsaltとして使用します。 – shibly

関連する問題