Whirlpool hash generator
Whirlpool is a 512-bit cryptographic hash designed in 2000 by Vincent Rijmen — co-author of AES — and Paulo Barreto. It was adopted in ISO/IEC 10118-3 and recommended by the European NESSIE project. This Whirlpool hash generator computes the final (2003) version of the algorithm for text or files and prints 128 hex characters.
Example
Input:
The quick brown fox jumps over the lazy dogWhirlpool hash:
b97de512e91e3828b40d2b0fdce9ceb3c4a71f9bea8d88e75c4fa854df36725fd2b52eb6544edcacd6f8beddfea403cb55ae31f03ad62a5ef54e42ee82c3fb35
At a glance
| Property | Value |
|---|---|
| Digest size | 512 bits (64 bytes, 128 hex characters) |
| Construction | Miyaguchi–Preneel using a dedicated 512-bit block cipher (“W”) |
| Rounds | 10 |
| Designed | Vincent Rijmen and Paulo Barreto, 2000; final version 2003 |
| Status | No practical attacks on the full function |
How it works
Whirlpool builds its compression function from a block cipher that resembles AES scaled up: it operates on an 8×8 matrix of bytes, using an S-box substitution, column shifts, a matrix multiplication and a round key addition. The same cipher schedules its own keys. Because it reuses well-studied AES-style ideas, it has a strong, conservative design.
Three versions — make sure they match
The original submission (Whirlpool-0) was tweaked twice: Whirlpool-T replaced the S-box with one that was easier to implement in hardware, and the final 2003 version corrected the diffusion matrix after a weakness was found. The three versions produce different hashes. This tool uses the final version, which is what current libraries such as PHP’s hash('whirlpool') and OpenSSL implement; if a value from an old program does not match, it may be using an earlier version.
In software, Whirlpool is typically slower than SHA-512, because each round processes the full 512-bit state with table lookups rather than native 64-bit additions. The difference rarely matters for small inputs but becomes noticeable on large files.
Whirlpool support by platform
| Platform | Built-in support |
|---|---|
| PHP | Yes, hash('whirlpool', $data) |
| OpenSSL 3 command line | Only with the legacy provider: openssl dgst -whirlpool -provider legacy -provider default file |
Python hashlib | Only when the underlying OpenSSL exposes it; check hashlib.algorithms_available |
| Node.js | Only when OpenSSL provides it; check crypto.getHashes() |
| Java | Not in the JDK; use Bouncy Castle's WhirlpoolDigest |
Where no library is available, this page computes the final 2003 version locally in your browser.
Where Whirlpool is used
- VeraCrypt (and formerly TrueCrypt) offer Whirlpool as a hash for header key derivation.
- Applications that standardise on ISO/IEC-approved algorithms.
- Integrity checks where a 512-bit digest from a non-SHA design is preferred.
Whirlpool is slower than SHA-512 and less widely supported, so for most new work SHA-512 or BLAKE2b is the practical choice. In PHP: hash('whirlpool', $data); with OpenSSL 3 it may require the legacy provider. The hash is computed locally in your browser.