The Miyaguchi-Preneel scheme was proposed around 1989 by Preneel, and independently by Miyaguchi.Ohta, and Iwata.

The Miyaguchi–Preneel single-block-length is a one-way compression function with the mathematical notation: $H_i = E_{g(H_{i-1})}(m_i)\oplus H_{i-1}\oplus m_i$. It feeds each block of the message $m_i$ as the plaintext to be encrypted, and the output ciphertext is then XORed with the same message block $m_i$ and also XORed with the previous hash value $H_{i-1}$ to produce the next hash value $H_i$. The previous hash value $H_{i-1}$ is fed as the key to the block cipher. In the first round when there is no previous hash value it uses a constant pre-specified initial value $H_0$. If the block cipher has different block and key sizes, the hash value $H_{i-1}$ will have the wrong size for use as the key. The cipher might also have other special requirements on the key. Then the hash value is first fed through the function $g(…)$ to be converted/padded to fit as key for the cipher.

history | show excerpt | excerpt history