Функция Миагути — Пренеля
Односторонняя функция сжатия Миагучи — Пренеля (англ. Miyaguchi-Preneel single-block-length one-way compression function) является расширенным вариантом аналогичной функции Matyas-Meyer-Oseas. Эта функция была независимо предложена Бартом Пренелем и Сёдзи Миагучи.
Функция подает каждый блок исходного сообщения (mi) в качестве текста, который будет зашифрован. Далее выполняется операция XOR() зашифрованного текста с тем же блоком исходного сообщения (mi), а затем также операции XOR с предыдущим значением хеш-функции (Hi-1) для получения следующего значения хеш (Hi).
Предыдущее значение хеш-функции (Hi-1) подают в качестве ключа для блочного шифра. В первом раунде, когда нет предыдущего значение хеш, он использует постоянное заранее оговоренное начальное значение (H0).
Если блочный шифр имеет различные размеры блока и ключа, тогда значение хеш-функции (Hi-1) будет иметь неправильный размер для использования в качестве ключа. Хеш-функция подается на функцию g() для преобразования, чтобы соответствовать в качестве ключа для шифрования.
В математической символике функция сжатия Миагучи-Пренеля может быть описана как:
Схема имеет скорость:
Роли mi и Hi-1 могут быть переставлены друг с другом так, что Hi-1 шифруются ключом mi. Таким образом, функцию сжатия Миагучи — Пренеля можно считать расширением метода Дэвиса — Мейера.