2013-09-30 21 views
6

Tôi có thể tạo mật khẩu bằng tay cho django như thế nào? Ví dụ, trong ứng dụng khác, nhưng sử dụng cơ sở dữ liệu tương tự như django .Đối với username 'admin' mật khẩu như thế nàyTrình tạo mật khẩu python cho django

pbkdf2_sha256$10000$T0BzrDwfZSrI$pSgvDEam9V9jcdYpYDVkYMMwtSnRrFdf6Aqow82Tjr8= 

Trả lời

10

Tôi nghĩ rằng đây có lẽ những gì bạn đang tìm kiếm:

Manually managing a user’s password

make_password (mật khẩu [, muối, dấu ngoặc vuông])

Tạo mật khẩu băm trong định dạng được sử dụng bởi ứng dụng này. Phải có một đối số bắt buộc: mật khẩu ở dạng văn bản thuần túy. Theo tùy chọn, bạn có thể cung cấp một muối và một thuật toán băm để sử dụng, nếu bạn không muốn sử dụng các giá trị mặc định (đầu tiên là mục nhập của cài đặt PASSWORD_HASHERS). Các thuật toán được hỗ trợ hiện tại là: 'pbkdf2_sha256', 'pbkdf2_sha1', 'bcrypt_sha256' (xem Sử dụng bcrypt với Django), 'bcrypt', 'sha1', 'md5', 'unsalted_md5' (chỉ dành cho tương thích ngược) và ' crypt 'nếu bạn đã cài đặt thư viện mã hóa . Nếu đối số mật khẩu là Không, mật khẩu không sử dụng được là được trả lại (một mật khẩu sẽ không bao giờ được chấp nhận bởi check_password()).


Tôi muốn viết chức năng sử dụng mà không cần django

Cũng may mắn Django là mã nguồn mở, vì vậy bạn có thể đi và lấy những gì bạn cần. The functions source is visible here.

+0

cảm ơn, nhưng phương pháp này được sử dụng với ứng dụng django. Tôi muốn viết chức năng để sử dụng mà không cần django, một cái gì đó như thế này: http://stackoverflow.com/questions/1306550/calculating-a-sha-hash-with-a-string-secret-key-in-python – saniaxxx26

3

Phổ biến nhất (không an toàn nhất) thuật toán băm là md5. Trích một vài ý tưởng từ hệ thống mật khẩu của Django có thể mã này:

import hashlib 

def make_password(password): 
    assert password 
    hash = hashlib.md5(password).hexdigest() 
    return hash 

def check_password(hash, password): 
    """Generates the hash for a password and compares it.""" 
    generated_hash = make_password(password) 
    return hash == generated_hash 


>>> hash = make_password('hello123') 
>>> hash 
'f30aa7a662c728b7407c54ae6bfd27d1' 
>>> check_password(hash, 'hello123') 
True 
>>> check_password(hash, 'Hello123') 
False 

Sử dụng make_password để tạo một hash và check_password để kiểm tra xem mật khẩu nhập không giống như một lưu trữ.

Như @Emil đã chỉ ra, Django hỗ trợ nhiều mật khẩu mật khẩu như pbkdf2_sha256 và pbkdf2_sha1, lưu trữ chuỗi dưới dạng giá trị 3 lần cách nhau bởi $: algorithm$salt$hash. salt là một chuỗi được tạo ngẫu nhiên để ngăn chặn cùng một mật khẩu lặp lại trong cơ sở dữ liệu.

Các vấn đề liên quan