Zen of Python
18.7K subscribers
1.49K photos
202 videos
38 files
3.7K links
Полный Дзен Пайтона в одном канале

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/xZOL
Download Telegram
compare_digest не выходит на первом различии

Когда ожидаемая и полученная подписи уже вычислены, остаётся проверить равенство. Обычное сравнение может закончиться на первом различии. Для криптографических значений в стандартной библиотеке есть hmac.compare_digest(expected, received).

Функция избегает досрочного выхода по содержимому. Передавайте аргументы одного типа: bytes-like либо строки только из ASCII, например два результата hexdigest(). Произвольные Unicode-строки и смесь str с bytes сюда не подходят.

В документации есть оговорка: разные длины или ошибка могут теоретически раскрыть сведения о длине и типе входов, но не об их значениях. Поэтому обещать одинаковое время для любых аргументов нельзя. Само сравнение также не вычисляет подпись и не решает, кому разрешён доступ.