| Криптология и стеганография В блоге крептоманов - защита информации |
Алгоритм шифрования, встроенный в программу сжатия данных PKZIP, был разработан Роджером Щлафлы (Roger Schlafly). Это потоковый шифр, шифрующий данные побайтно. По крайней мере этот алгоритм используется в версии 2.04g. Я не могу ничего сказать о более поздних версиях, но если не было сделано никаких заявлений об обратном, можно считать с большой вероятностью, что алгоритм не изменился. Алгоритм использует три 32-битовых переменных, инициализированных следующим образом:
К0 = 305419896
#!= 591751049
Кг = 878082192
Используется 8-битовый ключ К3, полученный из К2. Вот этот алгоритм (в стандартной нотации С):
G=PiAK3
К0= сгс32 (К0, Р,)
Ку= Кх+ (К0 & OxOOOOOOff)
K1 =i:1*134775813 + l
К2 = сгс32 (К2, Кх » 24)
К3 = ((К2 | 2)* ((К2 | 2)л1)) » 8
Функция сгс32 берет свое предыдущее значение и байт, выполняет их XOR и вычисляет следующее значение с помощью многочлена CRC, определенного 0xedb88320. На практике 256-элементная таблица может быть рассчитана заранее, и вычисление сгс32 превращается в:
сгс32 (а, Ь) = (а » 8) л table [(а & Oxff) © Ъ ]
Таблица рассчитывается в соответствии с первоначальным определением сгс32:
table [г] = crc32 (i, 0)
Для шифрования потока открытого текста сначала для обновления ключей зациклим байты ключа в алгоритме шифрования. Полученный шифротекст на этом этапе игнорируется. Затем побайтно зашифруем открытый текст. Открытому тексту предшествуют двенадцать случайных байтов, но это на самом деле неважно. Дешифрирование похоже на шифрование за исключением того, что во втором действии алгоритма вместо Р, используется С.
Комментарии
Отправить комментарий