Whirlpool is a hashing algorithm designed by Paulo S. L. M. Barreto and Vincent Rijmen. It has been recommended by the NESSIE project (along with SHA-256/384/512) and adopted as ISO/IEC 10118-3:2004.

Whirlpool uses Merkle-Damgärd strengthening and is a Miyaguchi-Preneel construction based on a substantially modified Advanced Encryption Standard (AES). It is a one-way, collision-resistant 512-bit hashing function operating on messages less than 2256 bits in length. Given a message less than 2256 bits in length, it returns a 512-bit message digest. It consists of the iterated application of a compression function, based on an underlying dedicated 512-bit block cipher that uses a 512-bit key. The round function and the key schedule are designed according to the Wide Trail strategy.

Whirlpool implementations on 8-bit and 64-bit processors benefit especially from the function structure, which nevertheless is not oriented toward any particular platform. Even a small change in the message will (with an extremely high probability) result in a different hash, which will usually look completely different just like two unrelated random numbers do. Reference implementations of Whirlpool exist in the public domain.

VOCAL offers a wide range of cryptographic solutions in both hardware and software form factors. Please contact us to discuss your application requirements.