Наиболее распространенный (не самый безопасный) алгоритм для хеширования - md5
. Распаковка несколько идей от системы паролей Django может быть этот кодом:
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
Использование make_password
для генерации хэша и check_password
, чтобы проверить, если введенный пароль совпадает с сохраненными один.
Как @Emil указывал, Джанго поддерживает несколько hashers паролей, такие как pbkdf2_sha256 и pbkdf2_sha1, сохраняя строку в качестве 3-кратного значения, разделенные $
: algorithm$salt$hash
. salt
- это случайная сгенерированная строка, которая предотвращает повторение повторяющегося пароля в базе данных.
спасибо, но эти методы используются с приложением django. Я хочу, чтобы функция записи использовалась без django, что-то вроде этого: http://stackoverflow.com/questions/1306550/calculating-a-sha-hash-with-a-string-secret-key-in-python – saniaxxx26