我已經將一堆用戶及其數據導入到django項目中。我需要爲每個人分配一個密碼。是否有這樣的代碼用於密碼生成,以應對Django哈希和鹽?Django密碼生成器
回答
您還可以使用內置的功能make_random_password
for user in new_users:
password = User.objects.make_random_password()
user.set_password(password)
# email/print password
另請注意,'make_random_password()'接受關鍵字參數'length'和'allowed_chars'。 – benjaoming 2013-07-17 20:01:20
import random
import string
user.set_password(''.join([random.choice(string.digits + string.letters) for i in range(0, 10)]))
user.save()
只需使用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()
您也可以使用from django.utils.crypto import get_random_string
出auth
模塊,它也接受關鍵字參數length
和allowed_chars
。
+1。優先於User.objects.make_random_password(),因爲它可以從獨立腳本運行而不必配置Django設置。我用它來生成隨機夾具。 – m000 2016-05-18 13:21:05
如果您只需要一個解決方案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'
如果你需要強大和力量的密碼,然後嘗試內置的 「hashers」 在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="
注:
- 使用Django的1.10和Python 3.4
- 1. 生成Django SHA1密碼
- 2. 密碼生成器
- 3. KSH密碼生成器
- 4. SHA-256密碼生成器
- 5. C#密碼生成密鑰
- 6. PHP的Neo4j密碼查詢生成器
- 7. Java隨機密碼生成器問題
- 8. 最好的python/Django代碼生成器?
- 9. 生成隨機密碼
- 10. 如何生成VNC密碼?
- 11. Nextcloud 12密碼生成
- 12. 生成隨機密碼?
- 13. PHP生成隨機密碼
- 14. 恢復密碼生成
- 15. 隨機密碼生成與
- 16. 遠程密碼生成
- 17. 密碼生成關鍵字
- 18. 僅基於密碼生成AES密鑰
- 19. Django 1.11意外更改密碼重置令牌的生成
- 20. AS3 Php密鑰生成器
- 21. django - 促銷代碼 - 優惠券代碼 - 折扣生成器
- 22. 如何在Codeigniter中爲忘記密碼生成隨機密碼
- 23. 密碼生成無安全編碼的URL安全密文
- 24. Rails使用has_secure_password自動生成密碼
- 25. bcrypt-ruby的密碼生成和校驗
- 26. 如何生成隨機密碼
- 27. 生成密碼列表文件
- 28. 一次性密碼生成快遞js
- 29. 密鑰組合的Ascii代碼生成
- 30. 自動生成密碼的Rails測試
它可能已經改變了,但是你不必「應付Django哈希和鹽」,因爲你可以使用['.set_pass用戶對象上的word()'幫助函數](https://docs.djangoproject.com/en/1.10/ref/contrib/auth/#django.contrib.auth.models.User.set_password)處理用你選擇的密鑰派生函數提供密碼,並用它設置'.password'字段/屬性。 – 2017-02-01 21:40:58