Выполняем 16 раундов шифрования над двумя последовательностями. Для 1, 2, 9 и 16 делаем сдвиг влево на 1 шаг, во всех остальных раундах делаем сдвиг на 2 шага.




Исходные данные: БАНАНАПИ

Переводим полученные 8 символов в двоичный вид с помощью таблицы ASCII:

ASC II: C1 C0 CD С0 CD С0 CD С0 E8

В двоичном коде:

11101111 0000001 01010101 1010100 10101001 1111100 11101011 11111100

Над 64-битным блоком данных выполняется начальная перестановка согласно таблице:

               
               
               
               
               
               
               
               

Получаем последовательность после начальной перестановки:

11111111 00000000 01001001 01010001 11111111 00000000 00011111 10011100

Разбиваем ее на две последовательности по 32 бита:

L0=11111111 00000000 01001001 01010001

R0=11111111 00000000 00011111 10011100

Далее осуществляется 16 итераций шифрования. Пусть 1<=n<=16, тогда производятся следующие вычисления:

Ln = Rn-1
Rn = Ln-1
f(Rn-1,Kn)

Функция f() работает с 2 блоками данных: Rn-1 and Kn. В результате ее работы получается 32-битный блок данных. Процесс вычисления функции f состоит из 4х шагов:

1. Над 32-битным входом выполняется расширяющая перестановка EP. Данная операция расширяет входное значение до 48 битов для последующего сложения с ключом раунда и обеспечивает влияние «размножаемых» битов на 2 таблицы замен (описаны ниже) вместо одной, что ускоряет возникновение зависимости каждого бита шифротекста от каждого входного бита, что называется лавинным эффектом.

2. Результат предыдущего шага складывается с ключом раунда Ki операцией XOR.

3. Результат сложения разбивается на 8 фрагментов по 6 битов, каждый из которых прогоняется через соответствующую таблицу замен (S1…S8). Таблицы замен являются фиксированными и описаны в стандарте. Каждая таблица содержит по 4 строки, содержащих по 16 значений от 0 до 15. Входное значение интерпретируется следующим образом: два крайних бита формируют номер строки (от 0 до 3), из которой выбирается число, расположенное в столбце, номер которого соответствует значению четырех остальных битов входа. Например, при двоичном входе 101100 (десятичное число 44) выбирается значение шестой ячейки второй строки.

 

Функции преобразования S(i)

S(1)

                               
                               
                               
                               

S(2)

                               
                               
                               
                               

S(3)

                               
                               
                               
                               

S(4)

                               
                               
                               
                               

S(5)

                               
                               
                               
                               

S(6)

                               
                               
                               
                               

S(7)

                               
                               
                               
                               

S(8)

                               
                               
                               
                               

 

4. 4-битные значения, полученные после выполнения замен, объединяются, после чего над ними выполняется операция P, представляющая собой простую перестановку согласно следующей таблице:

                               
                               

 

В качестве ключа используем слово из 8 букв, также переведенных в двоичную форму при помощи таблицы ASCII.

Ключ шифрования: ПРИЕЗЖАЮ

Переводим полученные 8 символов в двоичный вид с помощью таблицы ASCII:

ASC II: CF D0 C8 C5 C7 C6 C0 DE

В двоичном коде:

11001111 11010000 11001000 11000101 11000111 11000110 11000000 11011110

64-х битный ключ:

Проведем процедуру извлечения 56 значащих битов из 64-битного ключа.

Выполним перестановку битов ключа согласно следующим таблицам:

56-ти битный ключ:

             
             
             
             
             
             
             
             

В результате перестановки за таблицей получаем последовательность из 56-ти бит:

1111111 1111111 1100000 0001000 1011000 1101110 0110000 1010010

Разбиваем ее на две последовательности по 28-м бит:

C0=1111111111111111000000001000

D0=1011000110111001100001010010

Выполняем 16 раундов шифрования над двумя последовательностями. Для 1, 2, 9 и 16 делаем сдвиг влево на 1 шаг, во всех остальных раундах делаем сдвиг на 2 шага.

Все последовательности, полученные при сдвиге Cn, Dn описаны в следующей таблице:

Номер итерации Количество сдвигов Созданные пары
1.   C1 = 1111111111111110000000010001 D1 = 0110001101110011000010100101
2.   C2 = 1111111111111100000000100011 D2 = 1100011011100110000101001010
3.   C3 = 1111111111110000000010001111 D3 = 0001101110011000010100101011
4.   C4 = 1111111111000000001000111111 D4 = 0110111001100001010010101100
5.   C5 = 1111111100000000100011111111 D5 = 1011100110000101001010110001
6.   C6 = 1111110000000010001111111111 D6 = 1110011000010100101011000110
7.   C7 = 1111000000001000111111111111 D7 = 1001100001010010101100011011
8.   C8 = 1100000000100011111111111111 D8 = 0110000101001010110001101110
9.   C9 = 1000000001000111111111111111 D9 = 1100001010010101100011011100
10.   C10 = 0000000100011111111111111110 D10 = 0000101001010110001101110011
11.   C11 = 0000010001111111111111111000 D11 = 0010100101011000110111001100
12.   C12 = 0001000111111111111111100000 D12 = 1010010101100011011100110000
13.   C13 = 0100011111111111111110000000 D13 = 1001010110001101110011000010
14.   C14 = 0001111111111111111000000001 D14 = 0101011000110111001100001010
15.   C15 = 0111111111111111100000000100 D15 = 0101100011011100110000101001
16.   C16 = 1111111111111111000000001000 D16 = 1011000110111001100001010010

До финальной перестановки битов ключей, необходимо слияние каждой пары данных. После того, как для каждого битового блока CnDn, где 1<=n<=16 осуществиться соответствующая перестановка по таблице CP, формируя ключи Kn. Только 48 бит каждой объединенной пары сохраняется в перестановленном ключе.

Объединяем в 56-битное значение последовательности, к которому применяется сжимающая перестановка, результатом которой является 48-битный ключ раунда. Сжимающая перестановка выполняется согласно следующей таблице:

           
           
           
           
           
           
           
           


Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: