パスワードを保存するために django.contrib.auth.hashers.make_password メソッドを使用しています。ユーザー名とパスワードを私のdjangoサイトに送信して認証を受けるiOSアプリがあります。生のパスワードではなく、暗号化されたパスワードを送信してもらいたいです。しかし、djangoがパスワードを暗号化する方法がわかりませんか? 他のプラットフォームの誰かが同じ暗号化されたパスワードをどのように生成できますか?
2 に答える
Django には、パスワードの暗号化に使用できるさまざまな方法があります。デフォルトでは、PBKDF2 が使用されます。
PASSWORD_HASHERS リストを見て、何が設定されているかを確認できます。
PASSWORD_HASHERS = ( 'django.contrib.auth.hashers.PBKDF2PasswordHasher', 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 'django.contrib.auth.hashers.BCryptPasswordHasher', 'django.contrib.auth.hashers.SHA1PasswordHasher' 、「django.contrib.auth.hashers.MD5PasswordHasher」、「django.contrib.auth.hashers.CryptPasswordHasher」、)
これは、iOS でのそのアルゴリズムの実装に関する SO の記事です: PBKDF2 using CommonCrypto on iOS
問題は、パスワードがソルト化されていることです。ソルトがわからない場合、パスワードを正しくハッシュできません。そのため、出力ハッシュが一致するように、ソルトをデバイスに安全に送信する必要があります。
バージョン <1.4 は SHA1、>=1.4 は PBKDF2 です。表を確認してください
select * from auth_user;
念のため、パスワード列はalgorithm$hashで詳細はドキュメントを確認してください。