Keccak

Keccak is a family of cryptographic hash algorithms that won the SHA-3 competition organized by NIST. What eventually became SHA-3 (FIPS 202) is a slight variant: though incompatible to Keccak, the security principles and margins remain the same.

If you are interested in writing SHA-3 compliant code, you must use the modules Crypto.Hash.SHA3_224, Crypto.Hash.SHA3_256, Crypto.Hash.SHA3_384 or Crypto.Hash.SHA3_512.

This module implements the Keccak hash functions for the 64 bit word length (b=1600) and the fixed digest sizes of 224, 256, 384 and 512 bits.

This is an example:

>>> from Crypto.Hash import keccak
>>>
>>> keccak_hash = keccak.new(digest_bits=512)
>>> keccak_hash.update(b'Some data')
>>> print keccak_hash.hexdigest()
class Crypto.Hash.keccak.Keccak_Hash(data, digest_bytes, update_after_digest)

A Keccak hash object. Do not instantiate directly. Use the new() function.

Variables:

digest_size (integer) – the size in bytes of the resulting hash

digest()

Return the binary (non-printable) digest of the message that has been hashed so far.

Returns:

The hash digest, computed over the data processed so far. Binary form.

Return type:

byte string

hexdigest()

Return the printable digest of the message that has been hashed so far.

Returns:

The hash digest, computed over the data processed so far. Hexadecimal encoded.

Return type:

string

new(**kwargs)

Create a fresh Keccak hash object.

update(data)

Continue hashing of a message by consuming the next chunk of data.

Parameters:

data (byte string/byte array/memoryview) – The next chunk of the message being hashed.

Crypto.Hash.keccak.new(**kwargs)

Create a new hash object.

Parameters:
  • data (bytes/bytearray/memoryview) – The very first chunk of the message to hash. It is equivalent to an early call to Keccak_Hash.update().

  • digest_bytes (integer) – The size of the digest, in bytes (28, 32, 48, 64).

  • digest_bits (integer) – The size of the digest, in bits (224, 256, 384, 512).

  • update_after_digest (boolean) – Whether Keccak.digest() can be followed by another Keccak.update() (default: False).

Return:

A Keccak_Hash hash object