2011-02-16 24 views

答えて

-2

を参照して、いくつかのアルゴリズムの結果は同じではありません

+0

ある文字列を別の文字列にコピーする場合は、パスワードも '123456'です。 – zjm1126

+0

はい、できます。しかし、あなたがそれを使っているならSHAについて学ぶべきです... – Konerak

0

は、Djangoはパスワードをハッシュする塩を使用しています。塩は、2 $の間の少数の文字です。技術的には、これらの行の1つを他の値で更新することができます。もっとに関する塩、ハッシュに

があなたのアルゴリズムに決めThis question

1

django 1.3まで「塩」のために生のパスワードだった:

Userオブジェクトのpassword属性は、次の形式の文字列です。

hashtype$salt$hash 

ハッシュタイプ、塩とハッシュで、ドル記号文字で区切られています。

ハッシュタイプは、sha1(デフォルト)、md5またはcrypt - パスワードの一方向ハッシュを実行するために使用されるアルゴリズムです。 Saltは、生のパスワードを暗号化してハッシュを作成するために使用されるランダムな文字列です。

しかしdjango 1.4後に「salt」の部分は、データベースに記録され、それがデフォルトで別のアルゴリズムを使用していますisn't。

+1

塩部分を保存していないdjango 1.4のビットが間違っています。 django 1.4はデフォルトで新しいアルゴリズム(PBKDF2)を使用していますが、塩を保存していない場合はパスワードを確認する方法がありません。塩に加えて、反復回数を記録し、キーを複数回(デフォルトでは10,000回)ハッシュして、ブルートフォース攻撃の難易度を増加させ、コンピューティングパワーが増加するにつれて容易に拡大縮小することができます。 –

+0

ドキュメンテーションがリンクされた後、パスワードのレコードはsaltなしのアルゴリズム$ hashになりました。公式のドキュメントにエラーがありますか? https://docs.djangoproject.com/en/1.4/topics/auth/#how-django-stores-passwords – diegueus9

+1

それはちょっと誤解を招いています。代わりに、おそらくそれを「トークン」と呼ぶ方がいいでしょう。つまり、認証メカニズムは最初の$の前の部分を使用して、どのアルゴリズムが使用されたかを判断し、PASSWORD_HASHERS設定で指定されたアルゴリズムの中から適切なハッシャーを呼び出します。それは文字列の残りの部分を渡します(最初の$の後)。 "ハッシュ"はいくつかのサブパートで構成され、ほとんどのアルゴリズムは塩を使用します。特にデフォルトのものがあります:https://docs.djangoproject.com/ja/dev/topics/auth/passwords/ –

関連する問題