Модуль hashlib

Введение

Примеры

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' 

Синтаксис

Параметры

Примечания