Python Language
hashlib
Поиск…
Вступление
hashlib реализует общий интерфейс для многих различных алгоритмов безопасного хэша и дайджеста сообщений. Включены алгоритмы безопасного хеша FIPS SHA1, SHA224, SHA256, SHA384 и SHA512.
MD5-хэш строки
Этот модуль реализует общий интерфейс для многих различных алгоритмов безопасного хэша и дайджеста сообщений. Включены алгоритмы безопасного хеша FIPS SHA1, SHA224, SHA256, SHA384 и SHA512 (определенные в FIPS 180-2), а также алгоритм MD5 MD5 (определенный в Internet RFC 1321).
Существует один метод-конструктор, который называется для каждого типа хэша. Все возвращают хэш-объект с тем же простым интерфейсом. Например: используйте sha1()
для создания хэш-объекта SHA1.
hash.sha1()
Конструкторами для хэш-алгоритмов, которые всегда присутствуют в этом модуле, являются md5()
, sha1()
, sha224()
, sha256()
, sha384()
и sha512()
.
Теперь вы можете передать этот объект произвольными строками с помощью метода update()
. В любой момент вы можете запросить у него дайджест конкатенации строк, hexdigest()
ему до сих пор, используя методы digest()
или hexdigest()
.
hash.update(arg)
Обновите хэш-объект с помощью строки arg. Повторные вызовы эквивалентны одному вызову с конкатенацией всех аргументов: m.update (a); m.update (b) эквивалентно m.update (a + b).
hash.digest()
Верните дайджест строк, переданных методу update (). Это строка байтов digest_size, которая может содержать символы, отличные от ASCII, включая нулевые байты.
hash.hexdigest()
Как digest (), за исключением того, что дайджест возвращается как строка двойной длины, содержащая только шестнадцатеричные цифры. Это можно использовать для безопасного обмена данными в электронной почте или других недвоичных средах.
Вот пример:
>>> import hashlib
>>> m = hashlib.md5()
>>> m.update("Nobody inspects")
>>> m.update(" the spammish repetition")
>>> m.digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
>>> m.hexdigest()
'bb649c83dd1ea5c9d9dec9a18df0ffe9'
>>> m.digest_size
16
>>> m.block_size
64
или же:
hashlib.md5("Nobody inspects the spammish repetition").hexdigest()
'bb649c83dd1ea5c9d9dec9a18df0ffe9'
алгоритм, предоставляемый OpenSSL
Генерический конструктор new()
который принимает имя строки желаемого алгоритма в качестве его первого параметра, также существует, чтобы разрешить доступ к перечисленным выше хэшам, а также любые другие алгоритмы, которые может предложить ваша библиотека OpenSSL. Именованные конструкторы намного быстрее, чем new()
и должны быть предпочтительнее.
Используя new()
с алгоритмом, предоставляемым OpenSSL:
>>> h = hashlib.new('ripemd160')
>>> h.update("Nobody inspects the spammish repetition")
>>> h.hexdigest()
'cc4a5ce1b3df48aec5d22d1f16b894a0b894eccc'