手動でdjangoのパスワードを生成するにはどうしたらいいですか?このdjango用のPythonパスワードジェネレータ
pbkdf2_sha256$10000$T0BzrDwfZSrI$pSgvDEam9V9jcdYpYDVkYMMwtSnRrFdf6Aqow82Tjr8=
手動でdjangoのパスワードを生成するにはどうしたらいいですか?このdjango用のPythonパスワードジェネレータ
pbkdf2_sha256$10000$T0BzrDwfZSrI$pSgvDEam9V9jcdYpYDVkYMMwtSnRrFdf6Aqow82Tjr8=
のようなたとえば、他のアプリケーションでは、しかし、ジャンゴ.FORのユーザ名にadmin 'と同じデータベースを使用して、パスワード私はあなたが探しているものかもしれないこの思い:
Manually managing a user’s password
make_password(パスワード〔、塩、hashers])
が使用 形式でハッシュされたパスワードを作成しますこのアプリケーションによって。 1つの必須の引数をとります: パスワードはプレーンテキストです。オプションで、デフォルト値(最初は のPASSWORD_HASHERS設定のエントリ)を使用しない場合は、saltと、使用するハッシュアルゴリズム を使用できます。現在サポートされているアルゴリズム は、 'pbkdf2_sha256'、 'pbkdf2_sha1'、 'bcrypt_sha256'(bcrypt をDjangoで使用するを参照)、 'bcrypt'、 'sha1'、 'md5'、 'unsalted_md5'(後方互換性は のみ)暗号ライブラリ「 」がインストールされている場合は「crypt」と表示されます。 password引数がNoneの場合、使用できないパスワードは (check_password()で決して受け入れられないパスワード)です。
私は、Djangoはオープンソースですので、あなたが行くとあなたが必要なものを取ることができます。まあ幸運にもジャンゴ
なし
を使用するための関数を書きたいですThe functions source is visible here。
ハッシングの最も一般的なアルゴリズムはmd5
です。 Djangoのパスワードシステムからいくつかのアイデアを抽出すると、このコードになります
import hashlib
def make_password(password):
assert password
hash = hashlib.md5(password).hexdigest()
return hash
def check_password(hash, password):
"""Generates the hash for a password and compares it."""
generated_hash = make_password(password)
return hash == generated_hash
>>> hash = make_password('hello123')
>>> hash
'f30aa7a662c728b7407c54ae6bfd27d1'
>>> check_password(hash, 'hello123')
True
>>> check_password(hash, 'Hello123')
False
使用make_password
入力したパスワードが保存されたものと同じであるかどうかを確認するために、ハッシュとcheck_password
を生成します。 algorithm$salt$hash
:
@Emilが指摘したように、Djangoは$
によって分離された3倍値として文字列を記憶し、そのようなpbkdf2_sha256とpbkdf2_sha1として複数のパスワードhashersをサポートします。 salt
は、同じパスワードがデータベース内で繰り返されないようにランダムに生成された文字列です。
ありがとうございますが、このメソッドはdjangoアプリケーションで使用されています。私はdjangoを使わずに、次のような関数を書いてほしい:http://stackoverflow.com/questions/1306550/calculating-a-sha-hash-with-a-string-secret-key-in-python – saniaxxx26