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.
Nguồn
2013-09-30 16:29:46
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