Skip to main content

Python binding for xxHash

Project description

Build Status Latest Version Downloads Supported Python versions License

xxhash is a Python binding for the xxHash library by Yann Collet.

Installation

$ pip install xxhash

Usage

Module version and its backend xxHash library version can be retrieved using the module properties VERSION AND XXHASH_VERSION respectively.

>>> import xxhash
>>> xxhash.VERSION
'0.3.0'
>>> xxhash.XXHASH_VERSION
'r37'

This module is hashlib-compliant, which means you can use it in the same way as hashlib.md5.

update() – updates the current digest with an additional string
digest() – return the current digest value
hexdigest() – return the current digest as a string of hexadecimal digits
intdigest() – return the current digest as an integer
copy() – return a copy of the current xxhash object

md5 digest returns bytes, but the original xxh32 and xxh64 C APIs return integers. While this module is made hashlib-compliant, intdigest() is also provided to get the integer digest.

Constructors for hash algorithms provided by this module are xxh32() and xxh64().

For example, to obtain the digest of the byte string b'Nobody inspects the spammish repetition'.

>>> import xxhash
>>> x = xxhash.xxh32()
>>> x.update(b'Nobody inspects')
>>> x.update(b' the spammish repetition')
>>> x.digest()
b'\xe2);/'
>>> x.digest_size
4
>>> x.block_size
16

More condensed.

>>> xxhash.xxh32(b'Nobody inspects the spammish repetition').hexdigest()
'e2293b2f'
>>> xxhash.xxh32(b'Nobody inspects the spammish repetition').digest() == x.digest()
True

An optional seed (default is 0) can be used to alter the result predictably.

>>> import xxhash
>>> xxhash.xxh64('xxhash').hexdigest()
'32dd38952c4bc720'
>>> xxhash.xxh64('xxhash', seed=20141025).hexdigest()
'b559b98d844e0635'
>>> x = xxhash.xxh64(seed=20141025)
>>> x.update('xxhash')
>>> x.hexdigest()
'b559b98d844e0635'
>>> x.intdigest()
13067679811253438005

digest() returns bytes of the big-endian** representation of the integer digest.

>>> import xxhash
>>> h = xxhash.xxh64()
>>> h.digest()
b'\xefF\xdb7Q\xd8\xe9\x99'
>>> h.intdigest().to_bytes(8, 'big')
b'\xefF\xdb7Q\xd8\xe9\x99'
>>> h.hexdigest()
'ef46db3751d8e999'
>>> format(h.intdigest(), '016x')
'ef46db3751d8e999'
>>> h.intdigest()
17241709254077376921
>>> int(h.hexdigest(), 16)
17241709254077376921

Caveats

ENDIANNESS

As of python-xxhash 0.3.0, digest() returns bytes of the big-endian representation of the integer digest. It used to be little-endian.

DONT USE XXHASH IN HMAC

Though you can use xxhash as an HMAC hash function, but it’s highly recommended not to.

xxhash is NOT a cryptographic hash function, it is a non-cryptographic hash algorithm aimed at speed and quality. Do not put xxhash in any position where cryptographic hash functions are required.

Project details


Download files

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

Source Distributions

xxhash-0.3.1.zip (21.0 kB view details)

Uploaded Source

xxhash-0.3.1.tar.gz (16.2 kB view details)

Uploaded Source

xxhash-0.3.1.tar.bz2 (14.4 kB view details)

Uploaded Source

File details

Details for the file xxhash-0.3.1.zip.

File metadata

  • Download URL: xxhash-0.3.1.zip
  • Upload date:
  • Size: 21.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for xxhash-0.3.1.zip
Algorithm Hash digest
SHA256 c97cac8785dc4f70b439ff9db03900b4ca7e1aca63274111fcab96183cfbf476
MD5 75e2fb38ca86c2985729cb9a2347d511
BLAKE2b-256 091b423ffcc32da2e33d9b0aa2fb6b4c58b2b568dd73d71e1f409191ad1329ff

See more details on using hashes here.

File details

Details for the file xxhash-0.3.1.tar.gz.

File metadata

  • Download URL: xxhash-0.3.1.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for xxhash-0.3.1.tar.gz
Algorithm Hash digest
SHA256 ac25e44a580d93c3a208ad847d267742d566927d46e4ff8188f350242737d1bc
MD5 1dc16e1fa658a688f79b8d68814dc25f
BLAKE2b-256 3427955fc60767d7be4d1760c121d568e6b3629024793abff89245ab7c34d673

See more details on using hashes here.

File details

Details for the file xxhash-0.3.1.tar.bz2.

File metadata

  • Download URL: xxhash-0.3.1.tar.bz2
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for xxhash-0.3.1.tar.bz2
Algorithm Hash digest
SHA256 7ebcda7df3c8c39a410b24bd33576c2b076facaba722b3512a05b82382931527
MD5 eb36eac39ee62853db932260e9d88731
BLAKE2b-256 f4630d07b01dce666cace4fa2b6fb07e1c52413653263e69558bd88eca3dc533

See more details on using hashes here.

Supported by

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