Whirlpool (cryptography)

:"WHIRLPOOL" redirects here. This article is about the algorithm. For other uses, see Whirlpool (disambiguation)."

Whirlpool (sometimes styled WHIRLPOOL) is a cryptographic hash function designed by Vincent Rijmen (co-creator of the Advanced Encryption Standard) and Paulo S. L. M. Barreto. The hash has been recommended by the NESSIE project. It has also been adopted by the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC) as part of the joint ISO/IEC 10118-3 international standard.

Design features

Whirlpool is a hash designed after the Square block cipher. Whirlpool is a Miyaguchi-Preneel construction based on a substantially modified Advanced Encryption Standard (AES). Given a message less than 2256 bits in length, it returns a 512-bit message digest. [cite paper
author=Barreto, Paulo S.L.M. and Rijmen, Vincent
title=The WHIRLPOOL Hashing Function
date=2003
url=http://planeta.terra.com.br/informatica/paulobarreto/whirlpool.zip
format=PDF
accessdate=2007-11-21
]

The authors have declared that "WHIRLPOOL is not (and will never be) patented. It may be used free of charge for any purpose. The reference implementations are in the public domain."

The algorithm is named after the Whirlpool Galaxy in Canes Venatici.

Two of the first widely-used mainstream cryptographic programs that started using Whirlpool were FreeOTFE, followed by TrueCrypt in 2005.

Version changes

The original Whirlpool will be called "Whirlpool-0", the first revision of Whirlpool will be called "Whirlpool-T" and the latest version will be called "Whirlpool" in the following test vectors.

* In the first revision in 2001, the s-box was changed from a randomly generated one with good cryptographic properties to one which has better cryptographic properties and is easier to implement in hardware.
* In the second revision (2003), a flaw in the diffusion matrix was found that lowered the estimated security of the algorithm below its potential. [cite paper
title=On the diffusion matrix employed in the Whirlpool hashing function
author=Kyoji, Shibutani and Shirai, Taizo
date=2003
url=http://www.cosic.esat.kuleuven.be/nessie/reports/phase2/whirlpool-20030311.pdf
format=PDF
accessdate=2007-11-21
] Changing the 8x8 rotating matrix constants from (1, 1, 3, 1, 5, 8, 9, 5) to (1, 1, 4, 1, 8, 5, 2, 9) solved this issue.

Whirlpool hashes

The Whirlpool algorithm has undergone two revisions since its original 2000 specification.

People incorporating Whirlpool will most likely use the most recent revision of Whirlpool; while there are no known security weaknesses in earlier versions of Whirlpool, the most recent revision has better hardware implementation efficiency characteristics, and is also likely to be more secure. As mentioned earlier, it is also the version adopted in the ISO/IEC 10118-3 international standard.

The 512-bit (64-byte) Whirlpool hashes (also termed "message digests") are typically represented as 128-digit hexadecimal numbers. The following demonstrates a 43-byte ASCII input and the corresponding Whirlpool hashes:

Whirlpool-0("The quick brown fox jumps over the lazy dog") = 4F8F5CB531E3D49A61CF417CD133792CCFA501FD8DA53EE368FED20E5FE0248C 3A0B64F98A6533CEE1DA614C3A8DDEC791FF05FEE6D971D57C1348320F4EB42D Whirlpool-T("The quick brown fox jumps over the lazy dog") = 3CCF8252D8BBB258460D9AA999C06EE38E67CB546CFFCF48E91F700F6FC7C183 AC8CC3D3096DD30A35B01F4620A1E3A20D79CD5168544D9E1B7CDF49970E87F1 Whirlpool("The quick brown fox jumps over the lazy dog") = B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725F D2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35

Even a small change in the message will (with an extremely high probability of 1-10-154) result in a different hash, which will usually look completely different just like two unrelated random numbers do. The following demonstrates the result of changing the previous input by a single letter, replacing d with e:

Whirlpool-0("The quick brown fox jumps over the lazy eog") = 228FBF76B2A93469D4B25929836A12B7D7F2A0803E43DABA0C7FC38BC11C8F2A 9416BBCF8AB8392EB2AB7BCB565A64AC50C26179164B26084A253CAF2E012676 Whirlpool-T("The quick brown fox jumps over the lazy eog") = C8C15D2A0E0DE6E6885E8A7D9B8A9139746DA299AD50158F5FA9EECDDEF744F9 1B8B83C617080D77CB4247B1E964C2959C507AB2DB0F1F3BF3E3B299CA00CAE3 Whirlpool("The quick brown fox jumps over the lazy eog") = C27BA124205F72E6847F3E19834F925CC666D0974167AF915BB462420ED40CC5 0900D85A1F923219D832357750492D5C143011A76988344C2635E69D06F2D38C

Adding a line feed to the string of characters would also completely change the resulting hash, even if the character itself is not displayed.

The hash of a zero-length string is:

Whirlpool-0("") = B3E1AB6EAF640A34F784593F2074416ACCD3B8E62C620175FCA0997B1BA23473 39AA0D79E754C308209EA36811DFA40C1C32F1A2B9004725D987D3635165D3C8 Whirlpool-T("") = 470F0409ABAA446E49667D4EBE12A14387CEDBD10DD17B8243CAD550A089DC0F EEA7AA40F6C2AAAB71C6EBD076E43C7CFCA0AD32567897DCB5969861049A0F5A Whirlpool("") = 19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A7 3E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3

Programming Examples

See also

* Hashcash
* Digital timestamping
* SHA

References

External links

* [http://paginas.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html Whirlpool homepage of P. Barreto himself] Includes detailed algorithm information, C and Java implementation, the paper, etc.
* [http://www.maradns.org/download/whirlpool.tar.bz2 A C implementation of all three revisions of Whirlpool] (direct download)
* [http://sourceforge.net/projects/jacksum A Java implementation of all three revisions of Whirlpool]
* [http://search.cpan.org/~avar/Digest-Whirlpool-1.0.6/ Perl Whirlpool module at CPAN]
* [http://raa.ruby-lang.org/project/whirlpool/ Ruby Whirlpool library]
* [http://www.cliki.net/Ironclad Ironclad: a Common Lisp cryptography package containing a Whirlpool implementation]
* [http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=39876&scopelist= The ISO/IEC 10118-3 standard]


Wikimedia Foundation. 2010.

Look at other dictionaries:

  • Whirlpool (disambiguation) — A whirlpool is a swirling body of water. It may also refer to:*Whirlpool Corporation, a household appliance manufacturer *Whirlpool (website), an Australian website for broadband users *Whirlpool (cryptography), a cryptographic hash function… …   Wikipedia

  • Whirlpool — хеш алгоритм, авторы Vincent Rijmen и Paulo S. L. M. Barreto. Работает на вводе до 2256 бит. Выходное значение алгоритма хеширования Whirlpool составляет 512 бит. Первая версия Whirlpool была опубликована в ноябре 2000 го года. Вторая версия… …   Википедия

  • Whirlpool (криптография) — У этого термина существуют и другие значения, см. Whirlpool (значения). Криптографическая хеш функция …   Википедия

  • Outline of cryptography — See also: Index of cryptography articles The following outline is provided as an overview of and topical guide to cryptography: Cryptography (or cryptology) – practice and study of hiding information. Modern cryptography intersects the… …   Wikipedia

  • Topics in cryptography — This article is intended to be an analytic glossary , or alternatively, an organized collection of annotated pointers.Classical ciphers*Autokey cipher *Permutation cipher*Polyalphabetic substitution **Vigenère cipher*Polygraphic substitution… …   Wikipedia

  • Salt (cryptography) — In cryptography, a salt consists of random bits, creating one of the inputs to a one way function. The other input is usually a password or passphrase. The output of the one way function can be stored rather than the password, and still be used… …   Wikipedia

  • Tiger (cryptography) — Tiger General Designers Ross Anderson and Eli Biham First published 1996 Detail Digest sizes 192, 128, 160 Rounds 24 In cryptography, Tiger is a …   Wikipedia

  • Panama (cryptography) — Panama General Designers Joan Daemen, Craig Clapp First published February 2002 Derived from StepRightUp Successors MUGI Cipher detail …   Wikipedia

  • Crypto++ — Developer(s) Wei Dai Initial release 1995 Stable release 5.6.1 / August 9, 2010; 14 months ago ( …   Wikipedia

  • Cryptographic hash function — A cryptographic hash function (specifically, SHA 1) at work. Note that even small changes in the source input (here in the word over ) drastically change the resulting output, by the so called avalanche effect. A cryptographic hash function is a… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”