Zaimportowałem stertę użytkowników i ich danych do projektu django. Muszę przypisać każdemu hasło. Czy istnieje taki fragment do generowania haseł, który poradzi sobie z hashem Django i solą?Generator haseł Django
Odpowiedz
Można również korzystać z wbudowanych funkcji make_random_password
for user in new_users:
password = User.objects.make_random_password()
user.set_password(password)
# email/print password
Zauważ również, że 'make_random_password()' przyjmuje argumenty słów kluczowych 'length' oraz' 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()
Wystarczy użyć API - django.contrib.auth.models.User
ma metodę .set_password()
. Oto przykład (który nie testowałem, ale powinno się pomysł):
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()
Również można użyć from django.utils.crypto import get_random_string
z auth
moduł, akceptuje również argumenty słów kluczowych: length
i allowed_chars
.
+1. Preferowane przez User.objects.make_random_password(), ponieważ można go uruchomić z autonomicznych skryptów bez konieczności konfigurowania ustawień Django. Używam tego do losowego generowania urządzeń. – m000
Jeśli potrzebujesz tylko rozwiązania Django`s, a następnie spróbuj dalej:
Aby wygenerować hasło normalnego użytkowania try 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'
Jeśli potrzebujesz silnego i zasilania hasło, a następnie spróbuj wbudowane "hashers" w 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="
Uwagi:
- Używane Django 1.10 i Python 3.4
- 1. integracja weryfikatorów haseł django z frameworkiem django validate_password
- 2. Python/Django - Unikaj zapisywania haseł w kodzie źródłowym
- 3. javascript ken generator generator liczb
- 4. Zapisywanie haseł w aplikacji
- 5. Przechowywanie haseł z pythonem
- 6. Generator HTML?
- 7. Budowanie haseł domeny Google Analytics
- 8. Hak do resetowania haseł Wordpress
- 9. Nie można zaimplementować filtru haseł
- 10. Przechowywanie haseł w aplikacjach iPhone'a
- 11. przechowywanie haseł w SQL Server
- 12. sposób dodawania haseł w yii2
- 13. Wyrażenie regularne do sprawdzania haseł
- 14. pg_search dokładnego dopasowania wyszukiwanych haseł
- 15. Wielu wyszukiwanych haseł NEST C#
- 16. Różnica między `yield z $ generator` i` return $ generator`?
- 17. Generator plików losowych (ponownie!)
- 18. Generator reguł przepisywania?
- 19. Generic Java Generator
- 20. Python generator objects: __sizeof __()
- 21. Generator ekspresowy bez Jade
- 22. ScalaCheck - Generowany generator tablicy
- 23. Angular2 Dokumentacja Generator
- 24. Generator formularzy JavaScript
- 25. Python Reverse Generator
- 26. python generator html
- 27. Statyczny generator strony internetowej
- 28. Generator kodu C#
- 29. Generator nazw dla .NET
- 30. __iter __() realizowane jako generator
Mogło się zmienić, ale nie musisz "radzić sobie z hashem Django i solą", ponieważ możesz użyć opcji .set_pass word() 'funkcja pomocnika] (https://docs.djangoproject.com/en/1.10/ref/contrib/auth/#django.contrib.auth.models.User.set_password) na obiekcie' User', który przetwarza Podaj hasło z wybraną funkcją wyprowadzania klucza i ustaw dla niego pole/hasło .password. –