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.4.0.zip (21.5 kB view details)

Uploaded Source

xxhash-0.4.0.tar.gz (16.7 kB view details)

Uploaded Source

xxhash-0.4.0.tar.bz2 (14.8 kB view details)

Uploaded Source

File details

Details for the file xxhash-0.4.0.zip.

File metadata

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

File hashes

Hashes for xxhash-0.4.0.zip
Algorithm Hash digest
SHA256 486d2abe7608187f5b6e20cc38e47dc060d1a51dde358d130fec5074807c7f1d
MD5 fca06aca580ddfa46183c1f5b84a282c
BLAKE2b-256 84932d7f7dca5987aac9d9435cfef2d745337fe04718aeb7fb536575969c6de8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for xxhash-0.4.0.tar.gz
Algorithm Hash digest
SHA256 e57e138b2d8b5abf240282cfb4128127015739c0b952dfa0b75e4a97adb60c8a
MD5 da2ae26eaaab92143a96c70801e11b07
BLAKE2b-256 59cb3c4c1d5910ca1b872dd4588793f7a7a0b5008793299f3942fcbf27895d1a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for xxhash-0.4.0.tar.bz2
Algorithm Hash digest
SHA256 92adbe1a534a396e51a9b4dcf1709e1ce2653ef1d24ffa74b552919d51eb77ce
MD5 b43ade03dc1974d2ccf3202fe92f3e86
BLAKE2b-256 9aa9e5c3d7205567049343e2a88035164874c7538bdc0ba9b9e043c62fec939e

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