.. _shake256:

SHAKE256
========

SHAKE256 is an *extendable-output function* (XOF) in the SHA-3 family, as specified in `FIPS 202`_.

As a XOF, SHAKE256 is a generalization of a cryptographic hash function.
Instead of creating a fixed-length digest (e.g. 32 bytes like SHA-2/256),
it can produce outputs of any desired length.

Output bits do **not** depend on the output length.

The *256* in its name indicates its maximum security level (in bits),
as described in Sections A.1 and A.2 of `FIPS 202`_.

In the following example, the output is 26 bytes (208 bits) long::

    >>> from Crypto.Hash import SHAKE256
    >>>
    >>> shake = SHAKE256.new()
    >>> shake.update(b'Some data')
    >>> print(shake.read(26).hex())

.. _FIPS 202: http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf

.. _SHA-2: http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf

.. automodule:: Crypto.Hash.SHAKE256
    :members:
