Jump to content

JH (hash function)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Taw (talk | contribs) at 00:02, 8 March 2011 (website for JH moved). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
JH
General
DesignersHongjun Wu
CertificationSHA-3 finalist
Detail
Digest sizes224, 256, 384, 512
Speed16.1 cpb on Core 2 in 64-bit mode using SSE2; 37.3 cpb using ANSI C.

JH is a cryptographic hash function submitted to the NIST hash function competition by Hongjun Wu. JH was chosen as one of the five finalists of the competition. JH has a 1024-bit state, and works on 512-bit input blocks. Processing an input block consists of three steps:

  1. XOR the input block into the left half of the state.
  2. Apply a 35.5-round unkeyed permutation (encryption function) to the state. This consists of 35 repetitions of:
    1. Break the input into 256 4-bit blocks, and map each through one of two 4-bit S-boxes, the choice being made by a 256-bit round-dependent key schedule. Equivalently, combine each input block with a key bit, and map the result through a 5→4 bit S-box.
    2. Mix adjacent 4-bit blocks using a maximum distance separable code over GF(24).
    3. Permute 4-bit blocks so that they will be adjacent to different blocks in following rounds.
    4. The final half-round consists of an S-box substitution without a following MDS or permutation step.
  3. XOR the input block into the right half of the state.

It is well suited to a bit slicing implementation using the SSE2 instruction set, giving speeds of 16.8 Cycles per byte.