これはパスワードです:私のmysqlデータベースのパスワードはdjangoを使用しています。
sha1$265b1$5ff32d53cf53bdef243b6f83e33e513514352406
sha1$73f58$b037706983a566e2a2b4bab7ef062c2e84f4a33e
この2つの文字列のパスワードはすべて、「123456」であり
が、彼らは別の文字列を持っている理由? Docsで述べたように
おかげ
これはパスワードです:私のmysqlデータベースのパスワードはdjangoを使用しています。
sha1$265b1$5ff32d53cf53bdef243b6f83e33e513514352406
sha1$73f58$b037706983a566e2a2b4bab7ef062c2e84f4a33e
この2つの文字列のパスワードはすべて、「123456」であり
が、彼らは別の文字列を持っている理由? Docsで述べたように
おかげ
は、Djangoはパスワードをハッシュする塩を使用しています。塩は、2 $
の間の少数の文字です。技術的には、これらの行の1つを他の値で更新することができます。もっとに関する塩、ハッシュに
があなたのアルゴリズムに決めThis question
django 1.3まで「塩」のために生のパスワードだった:
Userオブジェクトのpassword属性は、次の形式の文字列です。
hashtype$salt$hash
ハッシュタイプ、塩とハッシュで、ドル記号文字で区切られています。
ハッシュタイプは、sha1(デフォルト)、md5またはcrypt - パスワードの一方向ハッシュを実行するために使用されるアルゴリズムです。 Saltは、生のパスワードを暗号化してハッシュを作成するために使用されるランダムな文字列です。
しかしdjango 1.4後に「salt」の部分は、データベースに記録され、それがデフォルトで別のアルゴリズムを使用していますisn't。
塩部分を保存していないdjango 1.4のビットが間違っています。 django 1.4はデフォルトで新しいアルゴリズム(PBKDF2)を使用していますが、塩を保存していない場合はパスワードを確認する方法がありません。塩に加えて、反復回数を記録し、キーを複数回(デフォルトでは10,000回)ハッシュして、ブルートフォース攻撃の難易度を増加させ、コンピューティングパワーが増加するにつれて容易に拡大縮小することができます。 –
ドキュメンテーションがリンクされた後、パスワードのレコードはsaltなしのアルゴリズム$ hashになりました。公式のドキュメントにエラーがありますか? https://docs.djangoproject.com/en/1.4/topics/auth/#how-django-stores-passwords – diegueus9
それはちょっと誤解を招いています。代わりに、おそらくそれを「トークン」と呼ぶ方がいいでしょう。つまり、認証メカニズムは最初の$の前の部分を使用して、どのアルゴリズムが使用されたかを判断し、PASSWORD_HASHERS設定で指定されたアルゴリズムの中から適切なハッシャーを呼び出します。それは文字列の残りの部分を渡します(最初の$の後)。 "ハッシュ"はいくつかのサブパートで構成され、ほとんどのアルゴリズムは塩を使用します。特にデフォルトのものがあります:https://docs.djangoproject.com/ja/dev/topics/auth/passwords/ –
**追加塩**は異なります! – crodjer