Trachtenberg system: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
 
en>Sluffs
→‎General multiplication: changed: "Ordinary people can learn this algorithm and thus multiply four digit numbers in their head..." - removed "Ordinary people" - more important to stress its an easy way of doing calculations in your head
Line 1: Line 1:
The ac1st16.dll error is annoying and quite popular with all sorts of Windows computers. Not just does it make a computer run slower, however, it may additionally avoid we from utilizing a range of programs, including AutoCAD. To fix this problem, we should employ a easy system to remedy all the potential issues that cause it. Here's what you want to do...<br><br>However registry is conveniently corrupted and damaged when you may be using a computer. Overtime, without right maintenance, it is loaded with errors and wrong or missing information which may make a system unable to function correctly or implement a certain task. And whenever the system will not find the correct info, it will likely not learn what to do. Then it freezes up! That is the real cause of your trouble.<br><br>Registry cleaning is important considering the registry may receive crowded plus messy when it happens to be left unchecked. False entries send the operating program trying to find files and directories that have lengthy ago been deleted. This takes time and utilizes precious resources. So, a slowdown inevitably occurs. It is incredibly noticeable whenever you multitask.<br><br>If you feel we don't have enough cash at the time to upgrade, then the best option is to free up some room by deleting a few of the unwanted files plus folders.<br><br>Whenever you are hunting for the best [http://bestregistrycleanerfix.com/tune-up-utilities tuneup utilities] program, make sure to look for 1 that defragments the registry. It should also scan for assorted aspects, such as invalid paths plus invalid shortcuts plus programs. It should furthermore detect invalid fonts, check for device driver issues plus repair files. Also, be sure which it has a scheduler. That method, you can set it to scan your program at certain instances on certain days. It sounds like a lot, nevertheless it really is completely vital.<br><br>Windows relies heavily on this database, storing everything from your latest emails to your Internet favorites in there. Because it's thus important, the computer is consistently adding plus updating the files inside it. This is okay, but it may create a computer run slow, whenever your computer accidentally breaks its important registry files. This is a truly prevalent issue, plus actually makes a computer run slower every day. What occurs is that since your computer is frequently using 100's of registry files at when, it sometimes gets confused plus make several of them unreadable. This then makes a computer run slow, because Windows takes longer to read the files it requires.<br><br>Reboot PC - Simply reboot your PC to see if the error is gone. Often, rebooting the PC readjusts the internal settings and software plus therefore fixes the issue. If it doesn't then move on to follow the instructions below.<br><br>A program plus registry cleaner is downloaded within the web. It's effortless to use plus the procedure refuses to take long. All it does is scan plus then when it finds errors, it will fix plus clean those errors. An error free registry will protect the computer from mistakes plus provide we a slow PC fix.
:''This article is about the [[algorithm]]. For other uses, see [[Whirlpool (disambiguation)]].''
 
{{Infobox encryption method
|name          = Whirlpool
|image          =
|caption        =
|designers      = [[Vincent Rijmen]], [[Paulo S. L. M. Barreto]]
|publish date  = 2000
|series        =
|derived from   = [[Square (cipher)|Square]], [[Advanced Encryption Standard|AES]]
|derived to    =
|related to    =
|certification  = [[NESSIE]]
|digest size    = 512 bits
|key size      =  <!--(block or stream ciphers)-->
|security claim =
|block size    =  <!--(block ciphers)-->
|state size    =  <!--(stream ciphers)-->
|structure      = [[Miyaguchi-Preneel]]
|rounds        = 10
|cryptanalysis  = In 2009, a [[The Rebound Attack|rebound attack]] was announced that presents full collisions against 4.5 rounds of Whirlpool in 2<sup>120</sup> operations, semi-free-start collisions against 5.5 rounds in 2<sup>120</sup> time and semi-free-start near-collisions against 7.5 rounds in 2<sup>128</sup> time.<ref>{{cite conference |author=Florian Mendel1, Christian Rechberger, Martin Schläffer, Søren S. Thomsen |date=2009-02-24 |title=Cryptanalysis of Reduced Whirlpool and Grøstl |booktitle=Fast Software Encryption: 16th International Workshop |url=https://www.cosic.esat.kuleuven.be/fse2009/slides/2402_1150_Schlaeffer.pdf }}</ref>
}}
 
In [[computer science]] and [[cryptography]], '''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. 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 ==
[[File:Messier51 sRGB.jpg|thumb|190px|right|The [[Whirlpool Galaxy]] (M51), which inspired the name of the algorithm.<ref name="whirlpoolpg">{{cite web|url=http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html|accessdate=20 December 2011|title=The Whirlpool Hash Function}}</ref>]]
 
Whirlpool is a hash designed after the [[Square (cipher)|Square]] [[block cipher]]. Whirlpool is a [[One-way compression function#Miyaguchi–Preneel|Miyaguchi-Preneel]] construction based on a substantially modified [[Advanced Encryption Standard]] (AES). It takes a message of any length less than 2<sup>256</sup> bits and returns a 512-bit [[message digest]].<ref>
{{cite paper
|author=Barreto, Paulo S.L.M. and Rijmen, Vincent
|title=The WHIRLPOOL Hashing Function
|year=2003
|url=http://www.larc.usp.br/~pbarreto/whirlpool.zip
|format=PDF
|accessdate=2009-08-01}}</ref>
 
The authors have declared that "WHIRLPOOL is not (and will never be) patented. It may be used free of charge for any purpose."<ref name="whirlpoolpg" />
 
=== 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 [[MDS matrix|diffusion matrix]] was found that lowered the estimated security of the algorithm below its potential.<ref>{{cite paper
|title=On the diffusion matrix employed in the Whirlpool hashing function
|author=Kyoji, Shibutani and Shirai, Taizo
|year=2003
|url=http://www.cosic.esat.kuleuven.be/nessie/reports/phase2/whirlpool-20030311.pdf
|format=PDF
|accessdate=2007-11-21}}
</ref> 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.
 
== Internal Structure ==
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.<ref name="whirlpoolpg" /> The [[block cipher]] W consists of an 8×8 state matrix <math>S</math> of bytes, for a total of 512 bits. 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
<math>S=AK \circ MR \circ SC \circ SB(S) </math>.
 
=== SubBytes ===
 
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.
 
=== ShiftColumns ===
 
The '''ShiftColumns''' operation cyclically shifts each byte in each column of the state. Column ''j'' has its bytes shifted downwards by ''j'' positions.
 
=== MixRows ===
 
The '''MixRows''' operation is a right-multiplication of each row by an 8×8 matrix over <math>\mathbb{F}_{2^8}</math>. The matrix is chosen such that the branch number (an important property when looking at resistance to [[differential cryptanalysis]]) is 9, which is maximal.
 
=== AddRoundKey ===
 
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.
 
== 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 <math>1-10^{-154}</math>) 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 <tt>d</tt> with <tt>e</tt>:
 
  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
 
The hash of a zero-length string is:
 
  Whirlpool-0("") =
  B3E1AB6EAF640A34F784593F2074416ACCD3B8E62C620175FCA0997B1BA23473
  39AA0D79E754C308209EA36811DFA40C1C32F1A2B9004725D987D3635165D3C8
  Whirlpool-T("") =
  470F0409ABAA446E49667D4EBE12A14387CEDBD10DD17B8243CAD550A089DC0F
  EEA7AA40F6C2AAAB71C6EBD076E43C7CFCA0AD32567897DCB5969861049A0F5A
  Whirlpool("") =
  19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A7
  3E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3
 
== Implementations ==
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]].<ref name="whirlpoolpg" /> These reference implementations have been released into the public domain.<ref name="whirlpoolpg" />
 
Two of the first widely used mainstream cryptographic programs that started using Whirlpool were [[FreeOTFE]], followed by [[TrueCrypt]] in 2005.
 
== See also ==
* [[Digital timestamping]]
* [[Hashcash]]
 
== References ==
<references/>
 
== External links ==
* [http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html Whirlpool homepage] Includes detailed algorithm information, C and Java implementations, the paper, etc.
* [http://sourceforge.net/projects/jacksum A Java implementation of all three revisions of Whirlpool]
* [http://github.com/jzelinskie/whirlpool/ An open source Go implementation of the latest revision of Whirlpool]
* [http://www.karljapetre.com/whirlpool/ A Matlab Implementation of the Whirlpool Hashing Function]
* [http://compressme.net/ CHK] Freeware Checksum Utility with GUI and WHIRLPOOL support
* [http://rhash.sourceforge.net/ RHash], an [[open source]] command-line tool, which can calculate and verify Whirlpool hash.
* [https://metacpan.org/module/Digest::Whirlpool 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]
* [http://www.cosic.esat.kuleuven.be/nessie/testvectors/hash/whirlpool/index.html Test vectors for the Whirlpool hash from the NESSIE project]
* [https://code.google.com/p/csharptest-net/source/browse/src/Library/Crypto/WhirlpoolManaged.cs Managed C# implementation]
 
{{Cryptography navbox | hash|state=uncollapsed}}
{{ISO standards}}
 
[[Category:Cryptographic hash functions]]

Revision as of 00:27, 4 November 2013

This article is about the algorithm. For other uses, see Whirlpool (disambiguation).

Template:Infobox encryption method

In computer science and cryptography, 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. 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

The Whirlpool Galaxy (M51), which inspired the name of the algorithm.[1]

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). It takes a message of any length less than 2256 bits and returns a 512-bit message digest.[2]

The authors have declared that "WHIRLPOOL is not (and will never be) patented. It may be used free of charge for any purpose."[1]

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.[3] 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.

Internal Structure

The Whirlpool hash function is a Merkle–Damgård construction based on an AES-like block cipher W in Miyaguchi-Preneel mode.[1] The block cipher W consists of an 8×8 state matrix of bytes, for a total of 512 bits. 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 .

SubBytes

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.

ShiftColumns

The ShiftColumns operation cyclically shifts each byte in each column of the state. Column j has its bytes shifted downwards by j positions.

MixRows

The MixRows operation is a right-multiplication of each row by an 8×8 matrix over . The matrix is chosen such that the branch number (an important property when looking at resistance to differential cryptanalysis) is 9, which is maximal.

AddRoundKey

The AddRoundKey operation uses bitwise 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.

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 ) 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 (a single bit, even, in ASCII-compatible encodings), 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

The hash of a zero-length string is:

 Whirlpool-0("") =
 B3E1AB6EAF640A34F784593F2074416ACCD3B8E62C620175FCA0997B1BA23473
 39AA0D79E754C308209EA36811DFA40C1C32F1A2B9004725D987D3635165D3C8

 Whirlpool-T("") =
 470F0409ABAA446E49667D4EBE12A14387CEDBD10DD17B8243CAD550A089DC0F
 EEA7AA40F6C2AAAB71C6EBD076E43C7CFCA0AD32567897DCB5969861049A0F5A

 Whirlpool("") =
 19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A7
 3E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3

Implementations

The authors provide reference implementations of the WHIRLPOOL algorithm, including a version written in C and a version written in Java.[1] These reference implementations have been released into the public domain.[1]

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

See also

References

External links

Template:Cryptography navbox Template:ISO standards