КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Алгоритмы вычисления функции шифрования f и ключей для DES.Основная функция шифрования (функция Фейстеля) Аргументами функции f являются 32-битовый вектор и 48-битовый ключ ki, который является результатом преобразования 56-битового исходного ключа шифра k. Для вычисления функции f используются функция расширения Е, преобразование S, состоящее из 8 преобразований S-блоков , и перестановка P. Функция Е расширяет 32-битовый вектор до 48-битового вектора путём дублирования некоторых битов из ; при этом порядок битов вектора указан в таблице 2.
Первые три бита вектора являются битами 32, 1, 2 вектора . По таблице 2 видно, что биты 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29, 32 дублируются. Последние 3 бита вектора — это биты 31, 32, 1 вектора . Полученный после перестановки блок складывается по модулю 2 с ключами и затем представляется в виде восьми последовательных блоков . (таблицы с S перестановками) Предположим, что , и мы хотим найти . Первый и последний разряды являются двоичной записью числа а, 0<=a<=3, средние 4 разряда представляют число b, 0<=b<=15. Строки таблицы S3 нумеруются от 0 до 3, столбцы таблицы S3 нумеруются от 0 до 15. Пара чисел (а, b) определяет число, находящееся в пересечении строки а и столбца b. Двоичное представление этого числа дает . В нашем случае , , а число, определяемое парой (3,7), равно 7. Его двоичное представление =0111. Значение функции (32 бит) получается перестановкой Р, применяемой к 32-битовому блоку . Перестановка Р задана таблицей 4.
Генерирование ключей Ключи получаются из начального ключа k (64 бит = 8 байтов или 8 символов в ASCII) таким образом. Восемь битов, находящихся в позициях 8, 16, 24, 32, 40, 48, 56, 64 добавляются в ключ k таким образом чтобы каждый байт содержал нечетное число единиц. Это используется для обнаружения ошибок при обмене и хранении ключей. Затем делают перестановку для расширенного ключа (кроме добавляемых битов 8, 16, 24, 32, 40, 48, 56, 64). Такая перестановка определена в таблице 5.
Эта перестановка определяется двумя блоками и по 28 бит каждый. Первые 3 бита есть биты 57, 49, 41 расширенного ключа. А первые три бита есть биты 63, 55, 47 расширенного ключа. i=1,2,3…получаются из одним или двумя левыми циклическими сдвигами согласно таблице 6.
Ключ , i=1,…16 состоит из 48 бит, выбранных из битов вектора (56 бит) согласно таблице 7. Первый и второй биты есть биты 14, 17 вектора
Конечная перестановка Конечная перестановка действует на и используется для восстановления позиции. Она является обратной к перестановке IP. Конечная перестановка определяется таблицей 8.
|