Django Password Generator

I have imported a bunch of users and their data into a django project. I need to assign a password to everyone. Is such a snippet for generating a password that handles the hash and salt of Django?

+49
django passwords user
Feb 28 '12 at 10:59
source share
5 answers

You can also use the built-in function make_random_password

for user in new_users: password = User.objects.make_random_password() user.set_password(password) # email/print password 
+132
Feb 28 '12 at 11:27
source share
 import random import string user.set_password(''.join([random.choice(string.digits + string.letters) for i in range(0, 10)])) user.save() 
+4
Feb 28 '12 at 11:08
source share

You can also use from django.utils.crypto import get_random_string from the auth module, it also accepts the length and allowed_chars keyword arguments.

+4
Feb 11 '14 at 10:29
source share

Just use the API - django.contrib.auth.models.User has a .set_password() method. Here is an example (which I have not tested, but you should get an idea):

 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() 
+3
Feb 28 '12 at 11:09
source share

If you only need Django solutions, try the following:

To generate a regular password, try using 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' 

If you need a strong and powerful password, try the built-in "hashes" in Django

 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=" 

Notes:

  • Used by Django 1.10 and Python 3.4
+3
Nov 23 '16 at 9:45
source share



All Articles