- •Постановка задачі
- •Теоретична частина
- •Виконання роботи
- •3.1 Знаходження ключів
- •3.2 Шифрування
- •Виконаємо дії описані у функції fK Розділимо результат на 2 частини і пропустимо праву її частину через матрицю е/р:
- •3.3 Дешифрування
- •Виконаємо дії описані у функції fK
- •Ілюстрація роботи програми
- •Висновки
Виконання роботи
3.1 Знаходження ключів
Знайдемо ключі S-DES (рис.2):
обчислюємо 10-бітний ключ
4610 = 001011102
Ключ матиме вигляд 01 00101110
Виконуємо перестановку за матрицею Р10:
Р10 |
3 |
5 |
2 |
7 |
4 |
10 |
1 |
9 |
8 |
6 |
01 01001110 ->0111000110
Виконаємо циклічний зсув вліво на одну позицію для перших п’яти бітів, а потім других п’яти:
LS-1(01111) = 11110
LS-1(00110) = 01100
Результат 11110 01100
Виконуємо перестановку за матрицею Р8:
P8 |
6 |
3 |
7 |
4 |
8 |
5 |
10 |
9 |
0111001100 ->01111000
K1 = 01111000
Виконаємо циклічний зсув вліво на 2 позиції обох частин результату першого зсуву:
LS-2(11110) = 11101
LS-2(01100) = 10001
Результат 11101 10001
Виконуємо перестановку за матрицею Р8:
P8 |
6 |
3 |
7 |
4 |
8 |
5 |
10 |
9 |
11101 10001->11000110
K2 = 1100 0110
3.2 Шифрування
Знайдемо 8-бітний текст для шифрування:
9310 = 010111012
Пропустимо 8-бітний текст через матрицю IP
IP |
3 |
1 |
4 |
8 |
5 |
7 |
2 |
6 |
01011101-> 00111011
Виконаємо дії описані у функції fK Розділимо результат на 2 частини і пропустимо праву її частину через матрицю е/р:
0011 1011
E/P |
4 |
1 |
2 |
3 |
2 |
3 |
4 |
1 |
1011->11010111
Виконаємо операцію XOR з K1
11010111
01111000
10101111
Розділимо результат на 2 частини 1010 і 1111 і пропустимо їх через матриці S0 і S1 i отримаємо 1011
Пропустимо результат через P4:
P4 |
2 |
4 |
3 |
1 |
1011->0111
Виконаємо операцію XOR з лівою частиною результату перетворення матрицею ІР:
0111
0011
0100
Складаємо результат з правою частиною результату перетворення матрицею ІР і отримуємо функцію fK :
fK1 = 0100 1011
Пропустимо fK1 через SW отримаємо 1011 0100
Далі виконаємо ту саму функцію fK але для значення після SW 1011 0100:
Розділимо результат SW на 2 частини і пропустимо праву її частину через матрицю Е/Р:
1011 0100
E/Р |
4 |
1 |
2 |
3 |
2 |
3 |
4 |
1 |
0100 -> 00101000
Виконаємо операцію XOR з другим ключемK2
00101000
1100 0110
11101111
Розділимо результат на 2 частини 1110 і 1111 і пропустимо їх через матриці S0 і S1 i отримаємо 1000
Пропустимо через матрицю P4:
P4 |
2 |
4 |
3 |
1 |
1000 -> 0001
Виконаємо операцію XOR з правою частиною результату SW:
0001
1011
1010
Об’єднуємо результат з правою частино результату SW і отримуємо результат другої функції fK :
fK2 = 1010 0100
Цей результат fK2 пропустимо через матрицю ІP-1
ІP-1 |
2 |
7 |
1 |
3 |
5 |
8 |
6 |
4 |
1010 0100 -> 00110010
Encrypted = 001100102 (5010) - наше зашифроване значення.