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