import hmac hmac.compare_digest(a, b)
a
и b
- подписи сообщения.bool
.Функция compare_digest()
модуля hmac
безопасно сравнивает значения a
и b
, исключая атаку по времени и возвращает True
, если a == b
.
Эта функция использует подход, разработанный для предотвращения анализа синхронизации путем исключения поведения замыкания на основе содержимого, что делает его подходящим для криптографии.
Аргументы a
и b
- оба должны быть одного типа: либо только строка ASCII, как например возвращаемое HMAC.hexdigest()
, либо байтоподобный объект.
Примечание.
Если a
и b
имеют разную длину или возникает ошибка, атака по времени может теоретически раскрыть информацию о типах и длинах a
и b
, но не об их значениях.
>>> import hmac >>> key = 'secret-key'.encode() >>> msg = 'Привет, как дела'.encode() >>> digest = hmac.digest(b_key, b_msg, 'sha256') >>> digest1 = hmac.digest(b_key, b_msg, 'sha256') # Безопасное сравнение подписей. >>> hmac.compare_digest(digest, digest1) # True