Skip to main content

Constant-time string comparison

Project description

Sometimes you need to test strings for equality with an algorithm whose timing depends only on the length of the strings, and not on the contents of the strings themselves. If one of those strings is of constant width – an HMAC, for example – then it becomes a constant-time operation. This can be used to prevent some timing side-channel attacks, such as the critical vulnerability found in KeyCzar back in 2009.

This module offers a single function, equals(x, y), which takes two strings x and y and returns True if they are equal, and False if they are not. The time this function takes does not depend on what specific bytes are in these strings. Unicode strings are encoded as UTF-8 before being compared; it is recommended that you only use this on byte strings (str in Python 2, bytes in Python 3).

This works with Python 2 and 3, and PyPy. The license is Apache 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

streql-3.0.2.tar.gz (2.9 kB view details)

Uploaded Source

File details

Details for the file streql-3.0.2.tar.gz.

File metadata

  • Download URL: streql-3.0.2.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for streql-3.0.2.tar.gz
Algorithm Hash digest
SHA256 54231c479871f0d347aa740cd6273602a4dcdf4191209495afffbadf5f585935
MD5 7afb84687fed6e848383fc4ce51dfb47
BLAKE2b-256 9aa4b3e7012e4f98d8063327273af748249caf36d8b190ab55840a7ceea97bd4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page