He importado un montón de usuarios y sus datos a un proyecto django. Necesito asignar una contraseña a cada uno. ¿Hay un fragmento de este tipo para la generación de contraseñas que haga frente al hash y la sal de Django?Django Password Generator
Respuesta
También puede utilizar la función integrada make_random_password
for user in new_users:
password = User.objects.make_random_password()
user.set_password(password)
# email/print password
También tenga en cuenta que 'make_random_password()' acepta argumentos de palabras clave 'length' y' allowed_chars'. – benjaoming
import random
import string
user.set_password(''.join([random.choice(string.digits + string.letters) for i in range(0, 10)]))
user.save()
Sólo tiene que utilizar la API - django.contrib.auth.models.User
tiene un método .set_password()
. He aquí un ejemplo (que no he probado, pero debe tener la 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()
También puede utilizar from django.utils.crypto import get_random_string
de auth
módulo, acepta los argumentos de palabra clave length
y allowed_chars
también.
+1. Preferido sobre User.objects.make_random_password() porque se puede ejecutar desde scripts independientes sin tener que configurar los ajustes de Django. Yo uso esto para la generación de artefactos aleatorios. – m000
Si necesita sólo unas soluciones Django`s, a continuación, tratar a continuación:
Para generar una contraseña intento uso normal 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'
Si necesita fuerte y contraseña de inicio, a continuación, tratar built-in "hashers" en el 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="
Notas:
- Se utiliza Django 1.10 y Python 3.4
- 1. joomla password encryption
- 2. ¿Cómo hash a password?
- 3. Uso de Application Id Generator vs. Database Id Generator
- 4. Enforcing Strong Password con PHP
- 5. Python Documentation Generator
- 6. Hibernate ID Generator
- 7. Concurrent Prime Generator
- 8. MvcBuildViews Versus Razor Generator
- 9. PHP Barcode Image Generator
- 10. PHP MIDI Generator
- 11. PHP API Key Generator
- 12. Offline lorem ipsum generator
- 13. Python Reverse Generator
- 14. PHP Zend Framework Generator
- 15. Doctrine schema.yml generator
- 16. python html generator
- 17. Parser Generator para Objective C?
- 18. Best Static Photo Gallery Generator
- 19. PHP Lexer and Parser Generator?
- 20. RESTful JSON API Documentation Generator
- 21. C# Image Generator - Rendimiento lento
- 22. BarCode Image Generator en Java
- 23. Delphi QR Code component/generator?
- 24. RELAX NG C++ Code Generator?
- 25. iPhone QRCode Generator n Decoder
- 26. Coroutine vs Continuation vs Generator
- 27. Subversion ignorando las opciones "--password" y "--username"
- 28. ¿mysqldump --password realmente hace lo que dice?
- 29. ¡Juego! hash password devuelve un resultado malo
- 30. Phonegap input type password field focus
Puede haber cambiado, pero no tiene que "lidiar con el hash y la sal de Django" porque puede usar el ['setset_pass word() 'helper function] (https://docs.djangoproject.com/en/1.10/ref/contrib/auth/#django.contrib.auth.models.User.set_password) en un objeto' Usuario' que procesa el proporcionó la contraseña con la función de derivación de clave elegida y establece el campo/atributo '.password' con ella. –