Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Whirlpool (hash function)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== 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>GF({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.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)