Использование однонаправленных хэш-функций
Самым простым способом использовать для шифрования однонаправленную хэш-функцию является хэширование предыдущего блока шифротекста, объединенного с ключом, а затем выполнение XOR результата с текущим блоком открытого текста:

Установите длину блока равной длине результата однонаправленной хэш-функции. По сути это приводит к использованию однонаправленной хэш-функции как блочного шифра в режиме СРВ. При помощи аналогичной конструкции можно использовать однонаправленную хэш-функцию и в режиме OFB:

Надежность такой схемы определяется безопасностью однонаправленной хэш-функции.
Кагп
Этот метод, изобретенный Филом Карном (Phil Kam) и открытый им для свободного использования, создает обратимый алгоритм шифрования из определенных однонаправленных хэш-функций.
Алгоритм работает с 32-байтовыми блоками открытого текста и шифротекста. Длина ключа может быть произвольной, хотя определенные дины ключей более эффективны для конкретных однонаправленных хэш-функций. Для однонаправленных хэш-функций MD4 и MD5 лучше всего подходят 96-байтовые ключи.
Для шифрования сначала разбейте открытый текст на две 16-байтовых половины: Pl и Pr. Затем разбейте на две 48-байтовых половины ключ: Kl и Kr.

Добавьте Kl к Pl и выполните хэширование однонаправленной хэш-функцией, затем выполните XOR результата с Рr получая Сr, правую половину шифротекста. Затем, добавьте Кr к Сr выполните хэширование однонаправленной хэш-функцией. Выполните XOR результата с pi , получая С/. Наконец, объедините Сr и С/, получая шифротекст.

Для дешифрирования просто инвертируйте процесс. Добавьте Кr к Сr, выполните хэширование и XOR результата с Сl, получая Pl. Добавьте Kl к Pl, выполните хэширование и XOR результата с Сr, получая Рr.

Общая структура Кат совпадает с структурой множества других блочных алгоритмов, рассмотренных в этом разделе. У алгоритма только два этапа, так как его сложность определяется однонаправленной хэш-функцией. А, так как ключ используется только как вход хэш-функции, он не может быть раскрыт даже при помощи вскрытия с выбранным открытым текстом, если, конечно, безопасна используемая однонаправленная хэш-функция.
Luby-Rackoff
Майкл Любы (Michael Luby) и Чарльз Ракофф (Charles Rackoff) показали, что Кагп не является безопасным . Рассмотрим два одноблочных сообщения: АВ и АС. Если криптоаналитику известны открытый текст и шифротекст первого сообщения, а также первая половина открытого текста второго сообщения, то он может легко вычислить все второе сообщение. Хотя такое вскрытие с известным открытым текстом работает только при определенных условиях, оно представляет собой главную проблему в безопасности алгоритма.
Ее удается избежать при помощи трехэтапного алгоритма шифрования. Он использует три различных хэш-функции: H1, H2 и Н3. Дальнейшие исследования показали, что H1 может совпадать с Н2, или Н2 может совпадать с Н3, но не одновременно. Кроме того, H1, H2 и Н3 не могут быть основаны на итерациях одной и той же базовой функции . В любом случае при условии, что H(k,x) ведет себя как псевдослучайная функция, трехэтапная версия выглядит следующим образом:
(1)Разделите ключ на две половины: ki и Кг.
(2)Разделите блок открытого текста на две половины: lo и rq.
(3)Объедините Kl и R0 выполните хэширование. Выполните XOR результата хэширования с rq, получая ri:

(4) Объедините Kr и R1 и выполните хэширование. Выполните XOR результата хэширования с L0, получая L1

(5) Объедините Kl и L1 и выполните хэширование. Выполните XOR результата хэширования с r1, получая R2:

 (6) Объедините L1 и R2, получая сообщение.
Шифр краткого содержания сообщения
Шифр краткого содержания coo6nieffiM(Message Digest Cipher, MDC), изобретенный Питером Гутманном (Peter Cutmann) , представляет собой способ превратить однонаправленные хэш-функции в блочный шифр, работающий в режиме СРВ. Шифр работает почти также быстро, как и хэш-функция, и по крайней мере настолько же безопасен. 
Хэш функции, например MD5 и SHA, используют 512-битовый текстовый блок для преобразования входного значения (128 битов в MD5, и 160 битов в SHA) в результат того же размера. Это преобразование необратимо, но прекрасно подходит для режима СРВ: и для шифрования, и для дешифрирования используется одна и та же операция.
Рассмотрим MDC с SHA. MDC использует 160-битовый блок и 512-битовый ключ. Используется побочный эффект хэш-функции, когда в качестве прежнего хэш-значения берется входной блок открытого текста (160 битов), а 512-битовый вход хэш-функции играет роль ключа (см. Рис 14.5). Обычно при использовании хэш-функции для хэширования некоторого входа 512-битовый вход меняется при хэшировании каждого нового 512-битового блока. Но в данном случае 512-битовый вход становится неизменяемым ключом.
MDC можно использовать с любой однонаправленной хэш-функцией: MD4, MD5, Snefru, и т.д. Он незапатентован и может быть совершенно бесплатно использован кем угодно когда угодно и для чего угодно.
Однако лично я не верю в эту схему. Можно подобрать такой способ взлома, на противостояние которому хэш-функция не была рассчитана. Хэш-функции не обязаны противостоять вскрытию с выбранным открытым текстом, когда криптоаналитик выбирает некоторые начальные 160-битовые значения, получает их "зашифрованными" одним и тем же 512-битовым "ключом" и пользуется этим для получения некоторой информации об используемом 512-битовом ключе. Так как разработчики хэш-функции не должны беспокоиться о такой возможности, считать ваш шифр безопасным по отношению к приведенному способу вскрытия - не лучшая идея.
Безопасность шифров, основанных на однонаправленных хэш-функциях
Хотя эти конструкции и могут быть безопасными, они зависят от используемой однонаправленной хэш-функции. Хорошая однонаправленная хэш-функция не обязательно дает безопасный алгоритм шифрования. Существуют различные криптографические требования. Например, линейный криптоанализ бесполезен против однонаправленных хэш-функциях, но действенен против алгоритмов шифрования. Однонаправленная хэш-функция, такая как SHA, может обладать определенными линейными характеристиками, которые, не влияя на ее безопасность как однонаправленной хэш-функции, могут сделать небезопасным ее использование в таком алгоритме шифрования, как MDC. Мне неизвестно ни о каких результатах криптоанализа использования конкретной однонаправленной хэш-функции в качестве блочного шифра. Прежде чем использовать их дождитесь проведения подобного анализа.

Шифр краткого содержания сообщения (MDC).