반응형
장고 비밀번호 생성기
많은 사용자와 데이터를 django 프로젝트로 가져 왔습니다. 각각에 암호를 할당해야합니다. Django 해시와 솔트에 대처할 암호 생성을위한 스 니펫이 있습니까?
내장 함수 make_random_password를 사용할 수도 있습니다.
for user in new_users:
password = User.objects.make_random_password()
user.set_password(password)
# email/print password
또한 당신이 사용할 수있는 from django.utils.crypto import get_random_string
밖으로 auth
모듈, 그것은 키워드 인수 받아 length
와 allowed_chars
도합니다.
Django 솔루션 만 필요한 경우 다음을 시도하십시오.
일반 암호를 생성하려면 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'
강력하고 강력한 암호가 필요한 경우 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 사용
그냥 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()
import random
import string
user.set_password(''.join([random.choice(string.digits + string.letters) for i in range(0, 10)]))
user.save()
참고URL : https://stackoverflow.com/questions/9480641/django-password-generator
반응형
'program tip' 카테고리의 다른 글
파이썬 목록의 모든 요소에 논리 연산자를 적용하는 방법 (0) | 2020.11.03 |
---|---|
MySQL에서 누적 합계 열 만들기 (0) | 2020.11.03 |
Java에서 '(int) (char) (byte) -2'가 65534를 생성하는 이유는 무엇입니까? (0) | 2020.11.03 |
다음 위치 후 원격 파일 이름을 가져 오기 위해 컬 (0) | 2020.11.03 |
~ / bin을 내 경로에 어떻게 추가합니까? (0) | 2020.11.03 |