RIPEMD-160


RIPEMD-160 (от англ. RACE Integrity Primitives Evaluation Message Digest) — криптографическая хеш-функция, разработанная в Католическом университете Лувена Хансом Доббертином (англ. Hans Dobbertin), Антоном Босселарсом (Antoon Bosselaers) и Бартом Пренелем. Для произвольного входного сообщения функция генерирует 160-разрядное хеш-значение, называемое сводкой сообщения. RIPEMD-160 является улучшенной версией RIPEMD, которая, в свою очередь, использовала принципы MD4 и по производительности сравнима с более распространённой SHA-1.

Также существуют 128-, 256- и 320-битные версии этого алгоритма, которые, соответственно, называются RIPEMD-128, RIPEMD-256 и RIPEMD-320. 128-битная версия представляет собой лишь замену оригинальной RIPEMD, которая также была 128-битной и в которой были найдены уязвимости[1]. 256- и 320-битные версии отличаются удвоенной длиной сводки, что уменьшает вероятность коллизий, но при этом функции не являются более криптостойкими.

RIPEMD-160 была разработана в открытом академическом сообществе, в отличие от SHA-1 и SHA-2, которые были созданы NSA. С другой стороны, RIPEMD-160 на практике применяется несколько реже, чем SHA-1.

Сообщение расширяется так, чтобы его длина в битах по модулю 512 равнялась 448. Таким образом, в результате расширения, сообщению недостает 64 бита до длины, кратной 512 битам. Расширение производится всегда, даже если сообщение изначально имеет нужную длину.

Расширение производится следующим образом: один бит, равный 1, добавляется к сообщению, а затем добавляются биты, равные 0, до тех пор, пока длина сообщения не станет равной 448 по модулю 512. В итоге, к сообщению добавляется, как минимум, 1 бит, и, как максимум, 512.

64-битное представление (длины сообщения перед добавлением набивочных битов) добавляется к результату предыдущего шага. В маловероятном случае, когда больше, чем , используются только 64 младших бита. Эти биты добавляются в виде двух 32-битных слов, и первым добавляется слово, содержащее младшие разряды.