Сообщить об ошибке.

Алгоритмы хеширования модуля hashlib в Python

Встроенные в модуль алгоритмы хеширования.

hashlib.algorithms_guaranteed:

Атрибут hashlib.algorithms_guaranteed модуля hashlib представляет список, содержащий имена функций алгоритмов хеширования, гарантированно поддерживаемых этим модулем на всех платформах.

Все функции хеширования при вызове возвращают объект хеширования.

Обратите внимание, что устаревший алгоритм хеширования "md5" так же находится в этом списке, несмотря на то, что некоторые поставщики предлагают странную "FIPS-совместимую" сборку Python, которая исключает ее.

>>> import hashlib
# список алгоритмов хеширования, которые
# гарантированно присутствуют на любых платформах.
>>> hashlib.algorithms_guaranteed
# {'sha3_512', 'sha384', 'md5', 'shake_128', 
# 'sha256', 'sha3_256', 'sha3_224', 'sha512',
# 'blake2s', 'sha3_384', 'sha224', 'shake_256', 
# 'blake2b', 'sha1'}

# функция хеширования модуля будет называться
# так же, как один из элементов из списка выше...
>>> b_str = 'Вычисляем хеш этой строки'.encode() 
>>> hsh = hashlib.shake_128(b_str)
>>> hsh.hexdigest(25)
# 'df7681a8e62968a147415f1c6b37c41610ae5bc5889ef33a04'

# Так же эти имена будут распознаваться 
# при передаче в конструктор hashlib.new()
>>> hsh = hashlib.new('sha1')
>>> hsh.update(b_str)
>>> hsh.hexdigest()
# '91354a6447eb462d02a3a339a8be9f1e3e3237d4'

Дополнительные алгоритмы хеширования.

hashlib.algorithms_available:

Атрибут hashlib.algorithms_available модуля hashlib представляет из себя набор, содержащий имена алгоритмов хеширования, которые доступны в работающем интерпретаторе Python.

Эти имена алгоритмов будут распознаваться при передаче в конструктор hashlib.new(), который в свою очередь возвращает объект хеширования. Список алгоритмов, возвращаемых hashlib.algorithms_guaranteed всегда будет подмножеством этого набора.

Один и тот же алгоритм может появляться несколько раз в этом наборе под разными именами благодаря библиотеке OpenSSL.

>>> import hashlib
# полный список алгоритмов хеширования, которые
# поддерживаются вашей платформой и языком Python.
>>> hashlib.algorithms_available
# {'shake_128', 'md5', 'shake256', 'md5-sha1', 'sha512-256', 
# 'blake2s', 'sha512-224', 'sha3_512', 'sha3-256', 'sha384', 
# 'sha3-224', 'sha256', 'sha3_256', 'whirlpool', 'sha3_384', 
# 'sha1', 'shake128', 'sha3-512', 'md4', 'blake2b512', 'sha512', 
# 'sha224', 'sm3', 'ripemd160', 'blake2s256', 'sha3_224', 
# 'sha3-384', 'shake_256', 'blake2b'}


# Эти имена будут распознаваться только
# при передаче в конструктор hashlib.new()
>>> hsh = hashlib.new('sm3')
>>> hsh.update('Узнаем хеш этой строки'.encode())
>>> hsh.hexdigest()
# 'ba6fe8499a2cb3137f9fea41cbf455b7aa31f8afcac53424142bbdbde353e905'