Введение
Примеры
MD5 хеш строки
Этот модуль реализует общий интерфейс для множества различных безопасных алгоритмов хеширования и дайджеста сообщений. Включены алгоритмы безопасного хеширования FIPS SHA1, SHA224, SHA256, SHA384 и SHA512 (определенные в FIPS 180-2), а также алгоритм MDA RSA (определенный в Интернете RFC 1321).
Существует один метод конструктора, названный для каждого типа хэша. Все возвращают хеш-объект с одинаковым простым интерфейсом. Например: используйте sha1()
, чтобы создать SHA1 хэш - объект.
hash.sha1()
Конструкторы для алгоритмов хэширования, которые всегда присутствуют в этом модуле являются md5()
, sha1()
, sha224()
, sha256()
, sha384()
, и sha512()
.
Теперь вы можете кормить этот объект с произвольными строками , используя update()
метод. В любой момент вы можете задать его для дайджеста конкатенации строк , подаваемых к нему до сих пор с помощью digest()
или hexdigest()
методы.
hash.update(arg)
Обновите хеш-объект строкой arg. Повторные вызовы эквивалентны одному вызову с объединением всех аргументов: m.update (a); m.update (b) эквивалентно m.update (a + b).
hash.digest()
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'