2012-02-28 14 views
51

ユーザーとそのデータのヒープをdjangoプロジェクトにインポートしました。私はそれぞれにパスワードを割り当てる必要があります。 Djangoハッシュと塩に対処するためのパスワード生成のための抜粋はありますか?Djangoパスワードジェネレータ

+0

これは変更されている可能性がありますが、['.set_pass]を使用できるので、Djangoのハッシュとソルトに対処する必要はありません。 'User'オブジェクトの' word() 'ヘルパー関数(https://docs.djangoproject.com/en/1.10/ref/contrib/auth/#django.contrib.auth.models.User.set_password)選択したキー派生関数でパスワードを提供し、 '.password'フィールド/属性をそれに設定します。 –

答えて

137

あなたはまた、make_random_password

for user in new_users: 
    password = User.objects.make_random_password() 
    user.set_password(password) 
    # email/print password 
+11

'make_random_password()'はキーワード引数 'length'と' allowed_chars'を受け付けます。 – benjaoming

3
import random 
import string 
user.set_password(''.join([random.choice(string.digits + string.letters) for i in range(0, 10)])) 
user.save() 
4

だけでAPIを使用する - django.contrib.auth.models.User.set_password()方法があります。ここでは(私がテストしていないことが、あなたのアイデアを得る必要があります)の例です:

from random import choice 
from string import digits, letters 
from django.contrib.auth.models import User 

def _pw(length=6): 
    s = '' 
    for i in range(length): 
     s += random.choice(digits + letters) 
    return s 

for user in User.objects.all(): # or .filter(...) 
    user.set_password(_pw()) 
    user.save() 
4

また、あなたがauthの外にfrom django.utils.crypto import get_random_stringを使用することができる機能で構築を使用することができますモジュールでは、キーワード引数lengthallowed_charsも受け入れます。

+1

+1。 User.objects.make_random_password()は、Djangoの設定をしなくてもスタンドアロンのスクリプトから実行できるので、これを優先します。私はランダムな器具の生成にこれを使用します。 – m000

3

だけDjango`sソリューションが必要な場合は、次の試してみてください。

については、通常のパスワードを生成するには、BaseUserManagerを使用してみてください。あなたが強いとパワーパスワードが必要な場合は

In [341]: from django.contrib.auth.base_user import BaseUserManager 

# simple password, it length is 10, and it contains ascii letters and digits 
In [344]: BaseUserManager().make_random_password() 
Out[344]: 'aYMX5Wk7Cu' 

In [345]: BaseUserManager().make_random_password() 
Out[345]: 'rM7759hw96' 

In [346]: BaseUserManager().make_random_password() 
Out[346]: 'EkbZxEXyAm' 

# passed length of a password 
In [347]: BaseUserManager().make_random_password(45) 
Out[347]: 'dtM9vhSBL9WSFeEdPqj8jVPMH9ytsjPXrkaHUNUQu4zVH' 

In [348]: BaseUserManager().make_random_password(45) 
Out[348]: 'jypVaXuw9Uw8mD4CXtEhtj2E4DVYx23YTMwy8jGTKsreR' 

# passed length of a password and symbols for choice 
In [349]: BaseUserManager().make_random_password(45, 'abcdf') 
Out[349]: 'daacbfabfccfdbdddbbcddcfcfbfcdabbaccbfcadbccd' 

In [351]: import string 

# password contains only digits 
In [352]: BaseUserManager().make_random_password(50, string.digits) 
Out[352]: '00526693878168774026398080457185060971935025500935' 

# password contains only ascii symbols in lowercase 
In [353]: BaseUserManager().make_random_password(50, string.ascii_lowercase) 
Out[353]: 'nvftisuezofnashdhlalfmscnmqtvigwjpfwsyycsefekytmar' 

# password contains only ascii symbols in uppercase 
In [354]: BaseUserManager().make_random_password(50, string.ascii_uppercase) 
Out[354]: 'APKSUHHHTAAJCFEUONIXWWAKJGXIBHTQDZBTSYFTPDFOSRYEQR' 

、その後、ジャンゴ

In [355]: from django.contrib.auth.hashers import make_password 

In [357]: make_password('') 
Out[357]: 'pbkdf2_sha256$30000$JuKXdW3shCjL$PsPJX7Zale5JUBkWpIJI/+QlsuVWhz9Q+GQWVtTpQ/Y=' 

In [358]: make_password('text') 
Out[358]: 'pbkdf2_sha256$30000$lSv8kQ39BHE7$KQC5hRhuphYBXmBrXZBJGC+nxygfNWTDf8zQf/NNgY8=' 

In [360]: make_password('text', salt=['simething']) 
Out[360]: "pbkdf2_sha256$30000$['simething']$D+1vJQx9W2/c9sIz/J+7iEz4d4KFPg/R+0S87n/RKR4=" 

In [361]: make_password('text', salt=['something']) 
Out[361]: "pbkdf2_sha256$30000$['something']$NIcmOkEyg6mnH5Ljt+KvI2LVgZWg6sXS6Rh865rbhSc=" 

ノートに内蔵された "hashers" を試してみてください。

ジャンゴ1.10とPython 3.4に使用
関連する問題