Python 3.6+hashlibфункция
hashlib.shake_128()
хеширование
Хеш SHAKE128 из семейства SHA-3 с выходом произвольной длины: длину в байтах указывают при вызове digest(n) и hexdigest(n).
Синтаксис
hashlib.shake_128(data=b'', *, usedforsecurity=True).hexdigest(length)
hexdigest() без аргумента падает с TypeError — длина обязательна, и считается она в байтах, а не в знаках: hexdigest(8) даёт 16 шестнадцатеричных знаков. Короткий выход — префикс длинного, так что hexdigest(8) совпадает с началом hexdigest(16). Стойкость ограничена 128 битами, сколько бы байт ни запросить; нужно больше — shake_256().
Примеры
import hashlib
h = hashlib.shake_128(b'abc')
print(h.hexdigest(8)) # → 5881092dd818bf5c
print(h.hexdigest(16)[:16]) # → 5881092dd818bf5c — короткий выход — префикс
# Python 3.9+
import hashlib
try:
hashlib.shake_128(b'abc').hexdigest()
except TypeError as e:
print(e) # → hexdigest() missing required argument 'length' (pos 1)
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности