Для шифрования строк предназначен модуль hashlib. Прежде чем использовать функции из этого модуля, необходимо подключить модуль с помощью инструкции:
1 |
import hashlib |
Модуль предоставляет следующие функции: md5(), sha1(), sha224(), sha256(), sha384 и sha512(). В качестве необязательного параметра функциям можно передать шифруемую последовательность байтов. Например:
1 2 |
>>> import hashlib >>> h = hashlib.sha1(b"password") |
Передать последовательность байтов можно также с помощью метода update(). В этом случае объект присоединяется к предыдущему значению:
1 2 |
>>> h = hashlib.sha1() >>> h.update(b"password") |
Получить зашифрованную последовательность байтов и строку позволяют два метода – digest() и hexdigest():
1 2 3 4 5 |
>>> h = hashlib.sha1(b"password") >>> h.digest() b'[\xaaa\xe4\xc9\xb9??\x06\x82%\x0b1\xf83\x1b~\xe6\x8f\xd9' >>> h.hexdigest() '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8' |
Наиболее часто применяемой функцией является функция md5(), которая шифрует строку с помощью алгоритма MD5. Она используется для шифрования паролей так как не существует алгоритма для дешифровки. Для сравнения введенного пользователем пароля с сохраненным в базе необходимо зашифровать введенный пароль, а затем произвести сравнение.
1 2 3 4 5 6 7 |
>>> import hashlib >>> h = hashlib.md5(b"password") >>> p = h.hexdigest() >>> p # Пароль, сохраненный в базе '5f4dcc3b5aa765d61d8327deb882cf99' >>> h2 = hashlib.md5(b"password") # Пароль, введенный пользователем >>> if p == h2.hexdigest(): print("Пароль правильный") |
Программа выведет что пароль правильный.