Karn

Этот метод, изобретенный Филом Карном (Phil Karn) и открытый им для свободного использования, создает обратимый алгоритм шифрования из определенных однонаправленных хэш-функций.

Алгоритм работает с 32-байтовыми блоками открытого текста и шифротекста. Длина ключа может быть произвольной, хотя определенные дины ключей более эффективны для конкретных однонаправленных хэш-функций. Для однонаправленных хэш-функций MD4 и MD5 лучше всего подходят 96-байтовые ключи.

Для шифрования сначала разбейте открытый текст на две 16-байтовых половины: Pl и Pr. Затем разбейте на две 48-байтовых половины ключ: Kl и Kr.

P= Pl , Pr,

K = Kl , Kr

Добавьте Kl к Pl и выполните хэширование однонаправленной хэш-функцией, затем выполните XOR результата с Pr, получая Cr, правую половину шифротекста. Затем, добавьте Kr к Cr выполните хэширование однонаправленной хэш-функцией. Выполните XOR результата с Pl , получая Cl. Наконец, объедините Cr и Cl , получая шифротекст.

Cr = Pr A H(Pl, Kl)

Cl = Pl A H(Cr, Kr)

C = Cl, Cr

Для дешифрирования просто инвертируйте процесс. Добавьте Kr к Cr, выполните хэширование и XOR результата с Cl , получая Pl. Добавьте Kl к Pl, выполните хэширование и XOR результата с Cr , получая Pr.

Pl = Cl A H(Cr, Kr)

Pr = Cr A H(Pl, Kl)

P = Pl, Pr

Общая структура Karn совпадает с структурой множества других блочных алгоритмов, рассмотренных в этом разделе. У алгоритма только два этапа, так как его сложность определяется однонаправленной хэш-функцией. А, так как ключ используется только как вход хэш-функции, он не может быть раскрыт даже при помощи вскрытия с выбранным открытым текстом, если, конечно, безопасна используемая однонаправленная хэш-функция.