Python Glossary English

Python 3.6+secretsфункция

secrets.compare_digest()

сравнение

Сравнивает две строки или два bytes за время, не зависящее от места первого различия, — защита от атак по времени.

Синтаксис

secrets.compare_digest(a, b) -> bool

Обычное == останавливается на первом несовпавшем символе, и по времени ответа можно подобрать токен посимвольно. compare_digest проверяет всё целиком. Строки должны быть только ASCII — иначе TypeError; для произвольного текста сравнивайте .encode(). Это тот же объект, что hmac.compare_digest.

Примеры

import secrets
token = secrets.token_hex(8)
print(secrets.compare_digest(token, token))  # → True
print(secrets.compare_digest(b'abc', b'abd'))  # → False
try:
    secrets.compare_digest('пароль', 'пароль')
except TypeError as e:
    print(e)  # → comparing strings with non-ASCII characters is not supported

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности