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'