<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://en.zaoniao.it/index.php?action=history&amp;feed=atom&amp;title=Whirlpool_%28cryptography%29</id>
	<title>Whirlpool (cryptography) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://en.zaoniao.it/index.php?action=history&amp;feed=atom&amp;title=Whirlpool_%28cryptography%29"/>
	<link rel="alternate" type="text/html" href="http://en.zaoniao.it/index.php?title=Whirlpool_(cryptography)&amp;action=history"/>
	<updated>2026-05-15T09:46:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>http://en.zaoniao.it/index.php?title=Whirlpool_(cryptography)&amp;diff=2490&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;'''Whirlpool''' (sometimes styled '''WHIRLPOOL''') is a cryptographic hash function. It was designed by Vincent Rijmen (co-creator of the Advanced Encryption Standar...&quot;</title>
		<link rel="alternate" type="text/html" href="http://en.zaoniao.it/index.php?title=Whirlpool_(cryptography)&amp;diff=2490&amp;oldid=prev"/>
		<updated>2019-03-24T06:27:23Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Whirlpool&amp;#039;&amp;#039;&amp;#039; (sometimes styled &amp;#039;&amp;#039;&amp;#039;WHIRLPOOL&amp;#039;&amp;#039;&amp;#039;) is a &lt;a href=&quot;/Cryptographic_hash_function&quot; title=&quot;Cryptographic hash function&quot;&gt;cryptographic hash function&lt;/a&gt;. It was designed by &lt;a href=&quot;/index.php?title=Vincent_Rijmen&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Vincent Rijmen (page does not exist)&quot;&gt;Vincent Rijmen&lt;/a&gt; (co-creator of the Advanced Encryption Standar...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Whirlpool''' (sometimes styled '''WHIRLPOOL''') is a [[cryptographic hash function]]. It was designed by [[Vincent Rijmen]] (co-creator of the [[Advanced Encryption Standard]]) and [[Paulo S. L. M. Barreto]], who first described it in 2000. &lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
Whirlpool is a hash designed after the [[Square (cipher)|Square]] [[block cipher]], and is considered to be in that family of block cipher functions. &lt;br /&gt;
&lt;br /&gt;
Whirlpool is a [[One-way compression function#Miyaguchi–Preneel|Miyaguchi-Preneel]] construction based on a substantially modified [[Advanced Encryption Standard]] (AES). &lt;br /&gt;
&lt;br /&gt;
Whirlpool takes a message of any length less than 2&amp;lt;sup&amp;gt;256&amp;lt;/sup&amp;gt; bits and returns a 512-bit [[message digest]].&lt;br /&gt;
&lt;br /&gt;
The authors have declared that&lt;br /&gt;
:&amp;quot;WHIRLPOOL is not (and will never be) patented. It may be used free of charge for any purpose.&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
== Internal structure ==&lt;br /&gt;
The Whirlpool hash function is a [[Merkle–Damgård construction]] based on an [[Advanced Encryption Standard|AES]]-like [[block cipher]] W in [[One-way compression function#Miyaguchi–Preneel|Miyaguchi-Preneel]] mode.&lt;br /&gt;
&lt;br /&gt;
The [[block cipher]] W consists of an 8×8 state matrix &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; of bytes, for a total of 512 bits.&lt;br /&gt;
&lt;br /&gt;
The encryption process consists of updating the state with four round functions over 10 rounds. The four round functions are SubBytes (SB), ShiftColumns (SC), MixRows (MR) and AddRoundKey (AK). During each round the new state is computed as&lt;br /&gt;
&amp;lt;math&amp;gt;S=AK \circ MR \circ SC \circ SB(S) &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== SubBytes ===&lt;br /&gt;
&lt;br /&gt;
The '''SubBytes''' operation applies a non-linear permutation (the S-box) to each byte of the state independently. The 8-bit S-box is composed of 3 smaller 4-bit S-boxes.&lt;br /&gt;
&lt;br /&gt;
=== ShiftColumns ===&lt;br /&gt;
&lt;br /&gt;
The '''ShiftColumns''' operation cyclically shifts each byte in each column of the state. Column ''j'' has its bytes shifted downwards by ''j'' positions.&lt;br /&gt;
&lt;br /&gt;
=== MixRows ===&lt;br /&gt;
&lt;br /&gt;
The '''MixRows''' operation is a right-multiplication of each row by an 8×8 matrix over &amp;lt;math&amp;gt;GF({2^8})&amp;lt;/math&amp;gt;. The matrix is chosen such that the branch number (an important property when looking at resistance to [[differential cryptanalysis]]) is 9, which is maximal.&lt;br /&gt;
&lt;br /&gt;
=== AddRoundKey ===&lt;br /&gt;
&lt;br /&gt;
The '''AddRoundKey''' operation uses bitwise [[Exclusive or|xor]] to add a key calculated by the key schedule to the current state. The key schedule is identical to the encryption itself, except the AddRoundKey function is replaced by an '''AddRoundConstant''' function that adds a predetermined constant in each round.&lt;br /&gt;
&lt;br /&gt;
== Whirlpool hashes ==&lt;br /&gt;
The Whirlpool algorithm has undergone two revisions since its original 2000 specification.&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
The 512-bit (64-byte) Whirlpool hashes (also termed ''message digests'') are typically represented as 128-digit [[hexadecimal]] numbers.&amp;lt;br /&amp;gt;&lt;br /&gt;
The following demonstrates a 43-byte [[ASCII]] input (not including quotes) and the corresponding Whirlpool hashes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version !! Input String !! Computed Hash&lt;br /&gt;
|-&lt;br /&gt;
| Whirlpool-0 || style=&amp;quot;text-align: center;width:22em;&amp;quot;| ''&amp;quot;''[[The quick brown fox jumps over the lazy dog]]''&amp;quot;'' ||&lt;br /&gt;
 4F8F5CB531E3D49A61CF417CD133792CCFA501FD8DA53EE368FED20E5FE0248C&lt;br /&gt;
 3A0B64F98A6533CEE1DA614C3A8DDEC791FF05FEE6D971D57C1348320F4EB42D&lt;br /&gt;
|-&lt;br /&gt;
| Whirlpool-T || style=&amp;quot;text-align: center;width:22em;&amp;quot;| ''&amp;quot;''The quick brown fox jumps over the lazy dog''&amp;quot;'' ||&lt;br /&gt;
 3CCF8252D8BBB258460D9AA999C06EE38E67CB546CFFCF48E91F700F6FC7C183&lt;br /&gt;
 AC8CC3D3096DD30A35B01F4620A1E3A20D79CD5168544D9E1B7CDF49970E87F1&lt;br /&gt;
|-&lt;br /&gt;
| Whirlpool || style=&amp;quot;text-align: center;width:22em;&amp;quot;| ''&amp;quot;''The quick brown fox jumps over the lazy dog''&amp;quot;'' ||&lt;br /&gt;
 B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725F&lt;br /&gt;
 D2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Even a small change in the message will (with an extremely high probability of &amp;lt;math&amp;gt;1-10^{-154}&amp;lt;/math&amp;gt;) result in a different hash, which will [[Clustering illusion|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 (a single bit, even, in ASCII-compatible encodings), replacing &amp;lt;tt&amp;gt;d&amp;lt;/tt&amp;gt; with &amp;lt;tt&amp;gt;e&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version !! Input String !! Computed Hash&lt;br /&gt;
|-&lt;br /&gt;
| Whirlpool-0 || style=&amp;quot;text-align: center;width:22em;&amp;quot; | ''&amp;quot;''The quick brown fox jumps over the lazy '''eog'''''&amp;quot;'' ||&lt;br /&gt;
 228FBF76B2A93469D4B25929836A12B7D7F2A0803E43DABA0C7FC38BC11C8F2A&lt;br /&gt;
 9416BBCF8AB8392EB2AB7BCB565A64AC50C26179164B26084A253CAF2E012676&lt;br /&gt;
|-&lt;br /&gt;
| Whirlpool-T || style=&amp;quot;text-align:center; width:22em;&amp;quot;| ''&amp;quot;''The quick brown fox jumps over the lazy '''eog'''''&amp;quot;'' ||&lt;br /&gt;
 C8C15D2A0E0DE6E6885E8A7D9B8A9139746DA299AD50158F5FA9EECDDEF744F9&lt;br /&gt;
 1B8B83C617080D77CB4247B1E964C2959C507AB2DB0F1F3BF3E3B299CA00CAE3&lt;br /&gt;
|-&lt;br /&gt;
| Whirlpool || style=&amp;quot;text-align:center; width:22em;&amp;quot;| ''&amp;quot;''The quick brown fox jumps over the lazy '''eog'''''&amp;quot;'' ||&lt;br /&gt;
 C27BA124205F72E6847F3E19834F925CC666D0974167AF915BB462420ED40CC5&lt;br /&gt;
 0900D85A1F923219D832357750492D5C143011A76988344C2635E69D06F2D38C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The hash of a zero-length string is:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version !! Input String !! Computed Hash&lt;br /&gt;
|-&lt;br /&gt;
| Whirlpool-0 || style=&amp;quot;text-align:center; width:22em;&amp;quot;| ''&amp;quot;&amp;quot;'' ||&lt;br /&gt;
 B3E1AB6EAF640A34F784593F2074416ACCD3B8E62C620175FCA0997B1BA23473&lt;br /&gt;
 39AA0D79E754C308209EA36811DFA40C1C32F1A2B9004725D987D3635165D3C8&lt;br /&gt;
|-&lt;br /&gt;
| Whirlpool-T || style=&amp;quot;text-align:center; width:22em;&amp;quot;| ''&amp;quot;&amp;quot;'' ||&lt;br /&gt;
 470F0409ABAA446E49667D4EBE12A14387CEDBD10DD17B8243CAD550A089DC0F&lt;br /&gt;
 EEA7AA40F6C2AAAB71C6EBD076E43C7CFCA0AD32567897DCB5969861049A0F5A&lt;br /&gt;
|-&lt;br /&gt;
| Whirlpool || style=&amp;quot;text-align:center; width:22em;&amp;quot;| ''&amp;quot;&amp;quot;'' ||&lt;br /&gt;
 19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A7&lt;br /&gt;
 3E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
The authors provide [[reference implementation]]s of the WHIRLPOOL algorithm, including a version written in [[C (programming language)|C]] and a version written in [[Java (programming language)|Java]]. These reference implementations have been released into the public domain.&lt;br /&gt;
&lt;br /&gt;
Two of the first widely used mainstream cryptographic programs that started using Whirlpool were [[FreeOTFE]], followed by [[TrueCrypt]] in 2005.&lt;br /&gt;
&lt;br /&gt;
The algorithm is also commonly used by many companies to hash simple data.&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
&lt;br /&gt;
[http://wikipedia.org/ http://wikipedia.org/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cryptography]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>