Расширение ключа, цикловые константы
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Задания на лабораторные работы

 

 

Задание 1

 

Зашифровать и расшифровать открытый текст с помощью упрощенного алгоритма VS-AES. Выполнить 2 итерации.  Параметрами алгоритма являются:

 

· Многочлены для ByteSub :  

и       

· с коэффициентами из GF(2), которые можно задать двоичным вектором.

Например, многочлен  можно задать двоичным вектором (1 1 0 1) или десятичным числом “13 ”, соответствующим этому вектору.

· Многочлен первой степени для MixColumn c коэффициентами из , задаваемый двумя числами из .
Например, пара чисел (3.8) соответствует многочлену

· Ключ К, состоящий из четырех полубайтов, выраженных десятичными числами.

Например, К = 12 1 4 14 = 1100 0001 0100 1110 (16 бит).

· Открытый текст того же формата,

Например: Р = 1 5 6 11 = 0001 0101 0110 1011.

В приведенных арифметических выражениях вся арифметика в . Параметром задания является номер в списке группы  i   и номер группы   k = 1 или 2 или 3. Многочлены  и      и    заданы в таблице 1 десятичными числами.

Ключ                     .

Открытый текст   .

Задание начать с построения поля. Далее – сгенерировать цикловые ключи, вывести их на печать. Затем сгенерировать S - box и Mixcolumn   и обратные к ним преобразования для всех элементов поля (в виде таблицы). Все шаги алгоритма оформить в виде двух состояний – вход-выход.

 

 

Задание 2.

 В таблице 2 приведены открытые ключи собеседника по секретной переписке с помощью алгоритма RSA и его секретное зашифрованное сообщение.  Требуется:

1. Выработать свои секретные ключи.

2. Расшифровать посланное секретное сообщение.

3. Выработать общий ключ для обеспечения секретности на основе открытого ключа.

4. Послать абоненту расшифрованное верифицированное сообщение (т.е. сообщение и его цифровая подпись)

 

Задание 3.

Открытый элемент Р задан в табл. 3 – графа 2. Найти примитивный элемент поля. Считая, что секретный ключ каждого участника равен номеру студента в списке группы    i , вычислить ключ обмена для участника с номером 35 – i по алгоритму Диффи – Хэллмана

Задание 4

Зашифровать поговорку, выбранную из списка в соответствии с номером студента в группе различными спопобами:

 

1. спомощью способов, указанных в таблице3. графа 2;

2. С помощью ключа (пароля), где в качестве ключа используем:

1. константу с=3;

2. следующую в списке поговорку, используя алфавит Z33 = (А….Я, е=ё + пробел);

3.  псевдослучайную последовательность, сгенерированную линейным рекуррентным генератором. Зашифровать 7 первых символов, используя алфавит Z32 и равномерный код.  ПСП генерируется матрицей 5*5.

Полученное сообщение подписать, используя алгоритм Эль - Гамаля. В качестве хэш-функции использовать сумму пятиразрядных блоков по модулю 2

 


Примеры выполнения задания

 

 

Пример выполнения Задания1. Упрощенный алгоритм Rijndael,.

 

Построение поля

 

Вариант № 7, группа 2091 (№ 1)

Номер в списке группы              i = 7

Номер группы                   k = 1

 

В приведенных арифметических выражениях вся арифметика в GF(24).

За неприводимый многочлен возьмем P(x) = x4+x+1.

Тогда за примитивный элемент можно взять a = x.

 

     Элементы поля

a 0010 2 x a6 1100 12 x3+x2 a11 1110 x3+x2+x 14
a2 0100 4 x2 a7 1011 11 x3+x+1 a12 1111 x3+x2+x+1 15
a3 1000 8 x3 a8 0101 5 x2+1 a13 1101 x3+x2+1 13
a4 0011 3 x+1 a9 1010 10 x3+x a14 1001 x3+1 9
a5 0110 6 x2+x a10 0111 7 x2+x+1 a15 0001 1 1

 


Обратные элементы

a-1 a14 a-6 a9 a-11 a4
a-2 a13 a-7 a8 a-12 a3
a-3--3 a12 a-8 a7 a-13 a2
a-434 a11 a-9 a6 a-14 a
a35-5 a10 a-10 a5 a-15 a15

 

Многочлены для ByteSub

 

P(x) P1(x) C(x)
7 7 6 1, 13

 

p(x) =              710 = 01112 = x2 + x + 1 =     a10

p1(x) =   610 = 01102 = x2 + x = a5

 

Многочлен для MixColumn

 

c(x) = x + 13 = 0001 * x + 1101

 

 

Ключ К

 

i * 2 / 3 = 7 * 2 / 3 = a10 * a * a-4 = a11 * a11 = a15 * a7 = a7 = 10112

(i – k) / 7 = (7 - 1)  / 7 = (0111 + 0001) * a-10 = 0110 * a5 = a5 * a5 = a10 = 01112

(3 * i + 4) / k = (3 * 7 + 4) / 1 = (a4 * a10 + 0010) = a14 + 0010 = 1001 + 0010 = 10112

i – 7 = 7 – 7 = 0

K = (1011 0111 1011 0000)

Открытый текст P

 

 

P = (0101 1110 0011 0010)

 

S преобразование и обратное для всех элементов

 

p(x) =              710 = 01112 = x2 + x + 1 =     a10

p1(x) =   610 = 01102 = x2 + x = a5

S(x) = x-1 p + p1

 

S(0) = a5 =                                                                          0110

S(a) = a-1 a10 + a5 = a14 a10 + 0110 = a9 + 0110 = 1010 + 0110 = 1100

S(a2) = a-2 a10 + a5 = a13 a10 + 0110 = a8 + 0110 = 0101 + 0110 = 0011

S(a3) = a-3 a10 + a5 = a12 a10 + 0110 = a7 + 0110 = 1011 + 0110 = 1101

S(a4) = a-4 a10 + a5 = a11 a10 + 0110 = a6 + 0110 = 1100 + 0110 = 1010

S(a5) = a-5 a10 + a5 = a10 a10 + 0110 = a5 + 0110 = 0110 + 0110 = 0000

S(a6) = a-6 a10 + a5 = a9 a10 + 0110 = a4 + 0110 = 0011 + 0110 = 0101

S(a7) = a-7 a10 + a5 = a8 a10 + 0110 = a3 + 0110 = 1000 + 0110 = 1110

S(a8) = a-8 a10 + a5 = a7 a10 + 0110 = a2 + 0110 = 0100 + 0110 = 0010

S(a9) = a-9 a10 + a5 = a6 a10 + 0110 = a1 + 0110 = 0010 + 0110 = 0100

S(a10) = a-10 a10 + a5 = a5 a10 + 0110 = 0001 + 0110 =            0111

S(a11) = a-11 a10 + a5 = a4 a10 + 0110 = a14 + 0110 = 1001 + 0110 =     1111

S(a12) = a-12 a10 + a5 = a3 a10 + 0110 = a13 + 0110 = 1101 + 0110 =     1011

S(a13) = a-13 a10 + a5 = a2 a10 + 0110 = a12 + 0110 = 1111 + 0110 =     1001

S(a14) = a-14 a10 + a5 = a1 a10 + 0110 = a11 + 0110 = 1110 + 0110 =     1000

S(a15) = a-15 a10 + a5 = a15 a10 + 0110 = a10 + 0110 = 0111 + 0110 =   0001

 

 

Обратные преобразования

S-1(0110) = 0 = 0000 S-1(1100) = a = 0010 S-1(0011) = a2 = 0100 S-1(1101) = a3 = 1000 S-1(1010) = a4 = 0011 S-1(0000) = a5 = 0110 S-1(0101) = a6 = 1100 S-1(1110) = a7 = 1011 S-1(0010) = a8 = 0101 S-1(0100) = a9 = 1010 S-1(0111) = a10 = 0111 S-1(1111) = a11 = 1110 S-1(1011) = a12 = 1111 S-1(1001) = a13 = 1101 S-1(1000) = a14 = 1001 S-1(0001) = a15 = 0001

 

 

Шифрование

0)

 

1.1) SubBytes

 

 

1.2) ShiftRow

 

 

1.3) MixColumn

 

c(x) = x + 13 = 0001 * x + 1101

 

 

=

 

=

 

=

 

 

1.4) AddRoundKey

W[2] = W[3] =

 

 

2.1) SubBytes

 

 

2.2) ShiftRow

2.3) AddRoundKey

 

W[4] = W[5] =

 

Зашифрованный текст

 С = (5, 1, 5, 15)

 

Расшифровка

 

0) x = x + k2

1.1) x = r -> (x)

1.2) x = s-1 (x)

1.3) x = x + k1

1.4) x = m-1 x

2.1) x = r -> (x)

2.2) x = s-1 (x)

2.3) x = x + k0

 

0)

 

1.1) ShiftRow >

 

 

 

SubBytes

 

 

AddRoundKey

 

 

1.4) MixColumn

 

 

 

 

=

 

 

 

 

 

 

 

 

2.1) ShiftRow >

 

2.2) SubBytes

 

2.3) AddRoundKey

 

P = (0101 1110 0011 0010)

После шифровки и расшифровки был получен исходный открытый текст.


 

Пример выполнения Задания1. Упрощенный алгоритм Rijndael,.

 

 


ПОСТРОЕНИЕ ПОЛЯ

В приведенных арифметических выражениях вся арифметика в GF(24).

Неприводимый многочлен P(x) = x4+x+1.

Примитивный элемент a = x.

                                             

 

 



Обратные элементы:







ПАРАМЕТРЫ АЛГОРИТМА

i = 15, k = 1

Многочлены для ByteSub :

p1(x) = 12 = 1100 = x3 + x2

p0(x) = 4 = 0100 = x2

 

Многочлен для MixColumn :

с(x) = 6x + 11 = 0110*x + 1011

 

Открытый ключ К:

K = (10, 2, 6, 8)  

1010 0110
0010 1000

Открытый текст:

 

P = (5, 14, 2, 7)

0101 0010
1110 0111

S - box и обратное преобразование:

 

=


Обратное преобразование:

;

;

;       S -1:

7

Матрица М:

 

Матрица :

 

x     x-1 S(x) S-1(x)
0 0000 0 0000 0100 0010
α 0010 2 1001 1110 1111
α2 0100 4 1101 1101 1001
α3 1000 8 1111 0100 0011
α4 0011 3 1110 1000 0001
α5 0110 6 0111 0010 1111
α6 1100 12 1010 1011 1110
α7 1011 11 0101 1011 1100
α8 0101 5 1011 0111 1110
α9 1010 10 1100 0001 0111
α10 0111 7 0110 1110 0101
α11 1110 14 0011 0101 0010
α12 1111 15 1000 0010 0010
α13 1101 13 0100 0111 0100
α14 1001 9 0010 1101 1010
α15 0001 1 0001 1000 1010

 

 

ШИФРОВАНИЕ

·

·

·

·

·

·

·

·

 

Зашифрованный текст:

 

 

ДЕШИФРОВАНИЕ

·

·

·

·

·

·

·

·

 

Расшифрованный текст  соответствует исходному.

 

 

 Пример выполнения Задания2. .

 

Алгоритм шифрования RSA. Цифровая подпись

Группа 2091, вариант №7.

 

 

открытый ключ

шифро-

текст

n=p*q

e

c

7

667

17

219

 

Расшифровать текст C = 219.

Открытый ключ n = p*q = 667.

e = 17

 

Подбираем простые числа p и q. Получаем следующее представление n:

n = p*q = 667 = 23 * 29.

 

Найдем значение функции Эйлера:

j(n) = (p-1)(q-1) = 22*28 = 616.

 

В соответствии с алгоритмом шифрования RSA число е выбирается так, чтобы значения j(n) и e были взаимно простыми. Числа 638 и 17 являются взаимно простыми: у них нет общего делителя кроме единицы. Таким образом, число e выбрано корректно.

(638, 17) = 1

Чтобы расшифровать сообщение, необходимо найти секретный ключ d. Для этого нужно решить сравнение I степени:

 

ed º 1 mod j(n)

17d º 1 mod 616

 

Для решения сравнения воспользуемся алгоритмом Евклида:

17 = 616*0    +17

616 =     17*36    + 4

17 = 4*4 + 1

4 = 1*4 + 0

 

 

n -2 -1 0 1 2 3
qn     0 36 4 4
Pn 0 1 - - - -
Qn 1 0 1 36 145 -

 

d = (-1)k-1Qk-1 mod j(n) = 145 mod 616 = 145

 

Дешифрование

Открытый текст M = Cd mod n

M = 219145 mod 667 = 52

Открытый текст M = 52.

 

Шифрование

C = Me mod 667 = 5217 mod 667 = 219

Подпись

Открытый ключ e = 17

Открытый ключ n = 667

Секретный ключ d = 145

Возвести открытый текст (его хэш) в степень d по модулю n, получаем подпись.

sign = 52 ^ 145 mod 667 = 634

Проверка подписи

Получатель получает сообщение с подписью, подпись возводит в степень e по модулю n.

634 ^ 17 mod 667 = 52

При проверке получено сообщение (хэш сообщения), следовательно верификация сообщения пройдена успешно.

 

 Пример выполнения Задания2

 

Алгоритм шифрования RSA. Цифровая подпись

 

Пример выполнения Задания3.

Алгоритм Диффи-Хеллмана

Открытый элемент Р задан в таблице 3 – графа 2. Найти примитивный элемент поля. Считая, что секретный ключ каждого участника равен номеру студента в списке группы i , вычислить ключ обмена для участника с номером 35 – i по алгоритму Диффи-Хэллмана.

 

Вариант № 7, группа 2091 (№ 1)

Номер в списке группы              i = 7

Номер группы                   k = 1

P = 43

 

Открытый элемент P = 43. Найти примитивный элемент поля. Секретный ключ каждого участника i = 7, вычислить ключ обмена для участника с номером 35.

 

GF(43) = <0, 1, 2, 3, …, 40, 41, 42>

Найдем примитивный элемент поля GF(43).

 

Требуется найти такое число, принадлежащее интервалу [2,42], которое при возведении в 42-ю степень по модулю 43 будет давать в результате единицу. Если же единица будет получена раньше, чем при возведении в 42-ю степень, результаты возведения в степень начнут повторяться, и через выбранный элемент не удастся представить все элементы поля. Исходя из таких соображений, получаем несложный алгоритм нахождения примитивных элементов поля GF(43).

Алгоритм нахождения примитивных элементов поля GF(43).

 

 

int _tmain(int argc, _TCHAR* argv[])

{

long int mem, i, j, num, deg, modul, res;

unsigned char mas[44];

deg = 0; modul = 43; mem = 2;

while (mem < 42)

{

    num = mem; deg = 0;

    while (deg != 42)

    {

        res = 1; deg = 0;

        for (i = 0; i < 42; i++) mas[i] = 0;

        do

    {

            res = res*num; res = res % modul;

            deg++; mas[deg] = res;

        }

        while(res != 1);

        num++;

    }

    std::cout << num-1 << std::endl;

    for (i = 0; i < 42; i++)

    {

        for (j = 0; j < 42; j++)

        {

            if ((i != j) && (mas[j] == mas[i]))

                 std::cout << "Wrong" << std::endl;

        }

        mem = num;

    }

}

return 0;

}

 

 

В результате выполнения программы получим следующие значения:

3, 5, 12, 18, 19, 20, 26, 28, 29, 30, 33, 34

 

Выберем значение α = 20. Найдем элементы поля.

 

α = 20 α2 = 13 α3 = 2 α4 = 40 α5 = 26 α6 = 4 α7 = 37 α8 = 9 α9 = 8 α10 = 31 α11 = 18 α12 = 16 α13 = 19 α14 = 36 α15 = 32 α16 = 38 α17 = 29 α18 = 21 α19 = 33 α20 = 15 α21 = 42 α22 = 23 α23 = 30 α24 = 41 α25 = 3 α26 = 17 α27 = 39 α28 = 6 α29 = 34 α30 = 35 α31 = 12 α32 = 25 α33 = 27 α34 = 24 α35 = 7 α36 = 11 α37 = 5 α38 = 14 α39 = 22 α40 = 10 α41 = 28 α42 = 1

 

Секретный ключ участника А: XA = 7.

Секретный ключ участника B: YB = 35-7 = 28.

 

Открытый ключ участника А:

Открытый ключ участника B:

 

15 * 208 = 6

 

Обменный ключ участника А:

Обменный ключ участника B:

Значения обменного ключа для А и В совпадают.

Обменный ключ: K = 6

 

Пример выполнения Задания3. Алгоритм Диффи-Хеллмана

Открытый элемент Р задан в таблице 3 – графа 2. Найти примитивный элемент поля. Считая, что секретный ключ каждого участника равен номеру студента в списке группы i , вычислить ключ обмена для участника с номером 35 – i по алгоритму Диффи-Хэллмана.

 

Вариант № 15, группа 2091 (№ 1)

Номер в списке группы              i = 15

Номер группы                   k = 1

P = 37

 

Открытый элемент P = 37. Найти примитивный элемент поля. Секретный ключ каждого участника i = 15, вычислить ключ обмена для участника с номером 35-15 = 20.

 

GF(37) = <0, 1, 2, 3, …, 35, 36, 37>

Найдем примитивный элемент поля GF(37).

 

Требуется найти такое число, принадлежащее интервалу [2,37], которое при возведении в 37-ю степень по модулю 37 будет давать в результате единицу. Если же единица будет получена раньше, чем при возведении в 36-ю степень, результаты возведения в степень начнут повторяться, и через выбранный элемент не удастся представить все элементы поля. Исходя из таких соображений, получаем несложный алгоритм нахождения примитивных элементов поля GF(37).

 

 

Алгоритм нахождения примитивных элементов поля GF(37).

 

int _tmain(int argc, _TCHAR* argv[])

{

       long int mem, i, j, num, deg, modul, res;

       unsigned char mas[38];

       deg = 0; modul = 37; mem = 2;

       while (mem < 36)

       {

                   num = mem; deg = 0;

                   while (deg != 36)

                   {

                               res = 1; deg = 0;

                               for (i = 0; i < 36; i++) mas[i] = 0;

                               do

                               {

                                           res = res*num; res = res % modul;

                                           deg++; mas[deg] = res;

                               }

                               while(res != 1);

                               num++;

                   }

                   std::cout << num-1 << std::endl;

                   for (i = 0; i < 36; i++)

                   {

                               for (j = 0; j < 36; j++)

                               {

                                           if ((i != j) && (mas[j] == mas[i]))

                                                       std::cout << "Wrong" << std::endl;

                               }

                               mem = num;

                   }

       }

}

 

 

В результате выполнения программы получим следующие значения:

2, 5, 13, 15, 17, 18, 19, 20, 22, 24, 32, 35

 

Выберем значение α = 2.

 

Секретный ключ участника А: XA = 15.

Секретный ключ участника B: YB = 35-15 = 20.

 

Открытый ключ участника А:

Открытый ключ участника B:

 

Обменный ключ участника А:

Обменный ключ участника B:

Значения обменного ключа для А и В совпадают.

Обменный ключ: K = 26

 

Пример выполнения Задания4. Традиционное шифрование

 

Вариант № 7, группа 2091 (№ 1)

Номер в списке группы              i = 7

Номер группы                   k = 1

 

P Открытый текст способ
7 43 Повадки волчьи, а душа заячья Хилла, цифирь Петра 1

 

Задание

 

Зашифровать поговорку, выбранную из списка в соответствии с номером студента в группе:

1. С помощью способов, указанных в таблице

2. С помощью ключа, где в качестве ключа используем

a. константу c = 3

b. следующую в списке поговорку, используя алфавит
Z33 = (А….Я, е=ё + пробел).

c. псевдослучайную последовательность, сгенерированную линейным рекуррентным генератором. Зашифровать 7 первых символов, используя алфавит Z32 и равномерный код. ПСП (псевдослучайная последовательность) генерируется матрицей 5*5.

Полученное сообщение подписать, используя алгоритм Эль-Гамаля. В качестве хэш-функции использовать сумму пятиразрядных блоков по модулю 2.

 

1.1 Цифирь Петра Первого (аналог)

 

а б в г д е ё ж з и й
я ты они она от кому ему им сейчас потом иногда
к л м н о п р с т у ф
когда всегда часто редко метко редко криво прямо мы нам налево
х ц ч ш щ ъ ы ь э ю я
направо вперед назад вбок вниз вверх бегом шагом быстро четко туда

 

Повадки волчьи, а душа заячья

 

Жирным шрифтом выделены фрагменты, которые не несут смысловой нагрузки в шифре. Остальной текст может быть расшифрован согласно таблице выше.

 

редко но метко они или я и от меня но когда лето потом зима

они метко всегда назад стреляли шагом потом уходили

я пришел

от нам повезло вбок я получил

сейчас я туда назад шагом снова туда пойду

 

 


Способ Хилла

 

Будем использовать следующий алфавит.

а б в г д е ж з и й к
1 2 3 4 5 6 7 8 9 10 11
л м н о п р с т у ф х
12 13 14 15 16 17 18 19 20 21 22
ц ч ш щ ъ ы ь э ю я _
23 24 25 26 27 28 29 30 31 32 33

 

 

           Пусть

Например:

 

Разобьем поговорку на блоки по четыре буквы:

 

ПОВА ДКИ_ ВОЛЧ ЬИ_А _ДУШ А_ЗА ЯЧЬЯ
(16 15 3 1) (5 11 9 33) (3 15 12 24) (27 9 33 1) (33 5 20 25) (1 33 8 1) (32 24 27 32)
(1 32 24 25) (24 16 16 7) (6 27 9 3) (27 22 21 17) (19 2 29 26) (1 16 18 1) (23 4 27 26)
АЯЧШ ЧППЖ ЕЬИВ ЬХФР ТБЪЩ АПТА ЦГЬЩ

 

Итак, после преобразования по методу Хилла, получаем:

ПОВАДКИ_ВОЛЧЬИ_А_ДУША_ЗАЯЧЬЯ = АЯЧШЧППЖЕЬИВЬХФРТБЪЩАПТАЦГЬЩ

 

Шифрование с помощью пароля

 

c = 3

 

Алфавит

абвгдеёжзийклмнопрстуфхцчшщъыьэюя_

 

Исходный текст:

Повадки_волчьи,_а_душа_заячья

После шифрования получим:

Тсегжнлвесоьэл,вгвжцыгвкгбьэб

 

С помощью текста

 

В качестве пароля взять следующую в списке поговорку.

Пароль:

По хозяину и собаке честь

Алфавит

Z33 = (А….Я, е=ё + пробел).

 

абвгдежзи й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я _

012345678 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

 

Пароль

По_хозяину_и_собаке_честьПо_хозяину и собаке честь

Исходный текст:

Повадки_волчьи_а_душа_заячья

Зашифрованный текст:

Юьбхтсжзпакяыщнб_ошччдштъейю

 

Расчеты:

п + п = (15 + 15) mod 33 = 30 = ю

о + о = (14 + 14) mod 33 = 28 = ь

_ + в = (32 + 2) mod 33 = 1 = б

х + а = (21 + 0) mod 33 = 21 = х

о + д = (14 + 4) mod 33 = 18 = т

з + к = (7 + 10) mod 33 = 17 = с

я + и = (31 + 8) mod 33 = 6 = ж

и + _ = (8 + 32) mod 33 = 7 = з

н + в = (13 + 2) mod 33 = 15 = п

у + о = (19 + 14) mod 33 = 0 = а

_ + л = (32 + 11) mod 33 = 10 = к

и + ч = (8 + 23) mod 33 = 31 = я

_ + ь = (32 + 28) mod 33 = 27 = ы

с + и = (17 + 8) mod 33 = 25 = щ

о + _ = (14 + 32) mod 33 = 13 = н

а + б = (0 + 1) mod 33 = 1 = б

а + _ = (0 + 32) mod 33 = 32 = _

к + д = (10 + 4) mod 33 = 14 = о

е + у = (5 + 19) mod 33 = 24 = ш

_ + ш = (32 + 24) mod 33 = 23 = ч

ч + а = (23 + 0) mod 33 = 23 = ч

е + _ = (5 + 32) mod 33 = 4 = д

с + з = (17+ 7) mod 33 = 24 = ш

т + а = т

ь + я = (28+ 31) mod 33 = 26 = ъ

п + ч = (15+ 23) mod 33 = 5 = е

о + ь = (14 + 28) mod 33 = 9 = й

_ + я = ю

 

После шифрования получаем:

Юьбхтсжзпакяыщнб_ошччдштъейю

 

Подпись сообщения

Запишем полученное сообщение в виде матрицы:

;

Подпишем полученное сообщение М. Возьмем p=23 и примитивный элемент поля GF(23) g=5, выберем xa=5, тогда открытый ключ .

Значение хэш-функции:

;

 

Возьмем случайное число k= 3;

;            ;

                      

                                

 

Проверим полученную подпись:

 

Итак, получим цифровую подпись сообщения (r,s) = (10, 105)=(10, 9)=(Л, К).

отправить нужно сообщение ЯЕЖУОЮУЛК.

 

С помощью способов, указанных в таблице требуется зашифровать поговорку: «Не пойман не вор не уличена не гулена».

4 Тарабарская грамота.

Б - Щ   З - Ф
В - Ш   К - Т
Г - Ч   Л - С
Д - Ц   М - Р
Ж - Х   Н - П

 

Исходный текст Не пойман не вор не уличена не гулена
Шифрованный текст Пе нойрап пе шом пе усигепа пе чусепа

 

5 Шифрование с помощью ключа:

 5.1 ключ к онстанта С=3.


А (0+3)(mod 32)=3 Г
Б (1+3)(mod 32)=4 Д
В (2+3)(mod 32)=5 Е
Г (3+3)(mod 32)=6 Ж
Д (4+3)(mod 32)=7 З
Е (5+3)(mod 32)=8 И
Ж (6+3)(mod 32)=9 Й
З (7+3)(mod 32)=10 К
И (8+3)(mod 32)=11 Л
Й (9+3)(mod 32)=12 М
К (10+3)(mod 32)=13 Н
Л (11+3)(mod 32)=14 О
М (12+3)(mod 32)=15 П
Н (13+3)(mod 32)=16 Р
О (14+3)(mod 32)=17 С
П (15+3)(mod 32)=18 Т

 

Р (16+3)(mod 32)=19 У
С (17+3)(mod 32)=20 Ф
Т (18+3)(mod 32)=21 Х
У (19+3)(mod 32)=22 Ц
Ф (20+3)(mod 32)=23 Ч
Х (21+3)(mod 32)=24 Ш
Ц (22+3)(mod 32)=25 Щ
Ч (23+3)(mod 32)=26 Ь
Ш (24+3)(mod 32)=27 Ы
Щ (25+3)(mod 32)=28 Ъ
Ь (26+3)(mod 32)=29 Э
Ы (27+3)(mod 32)=30 Ю
Ъ (28+3)(mod 32)=31 Я
Э (29+3)(mod 32)=0 A
Ю (30+3)(mod 32)=1 Б
Я (31+3)(mod 32)=2 В

 

Исходный текст НЕПОЙМАННЕВОРНЕУЛИЧЕНАНЕГУЛЕНА
Шифрованный текст РИТСМПГРРИЕСУРИЦОЛЬИРГРИЖЦОИРГ

5.2. С помощью ключа К=НЕ РОБЕЙ ВОРОБЕЙ ДЕРЖИСЬ ОРЛОМ

Н Е П О Й М А Н Н Е В О Р Н Е
13 5 32 15 14 9 12 0 13 32 13 5 32 2 14 16 32 13 5
Н Е Р О Б Е Й В О Р О Б Е Й Д Е
13 5 32 16 14 1 5 9 32 2 14 16 14 1 5 9 32 4 5
26 10 31 31 28 10 17 9 12 1 27 21 13 3 19 25 31 17 10
Ь К Я Я Ъ К С Й М Б Ы Х Н Г У Щ Я С К
У Л И Ч Е Н А Н Е Г У Л Е Н А
32 19 11 8 23 5 13 0 32 13 5 32 3 19 11 5 13 0  
Р Ж И С Ь О Р Л О М Н Е Р О Б Е
16 6 8 17 26 32 14 16 11 14 12 13 5 32 16 14 1 5  
15 25 19 25 16 4 27 16 10 27 17 12 8 18 27 19 14 5  
П Щ У Щ Р Д Ы Р К Ы С М И Т Ы У О Е

 

Исходный текст НЕ ПОЙМАН НЕ ВОР НЕ УЛИЧЕНА НЕ ГУЛЕНА
Шифрованный текст ЬКЯЯЪКСЙМБЫХНГУЩЯСКПЩУЩРДЫРКЫСМИТЫУОЕ



Шифрование с помощью ПСП.

 

Поле .  - примитивный многочлен.

 

Матрица, соответствующая примитивному многочлену: .

;

; ;

; ;

; ;

; ;

 

Н Е П О Й М
13 5 32 15 14 9 12
16 8 4 18 9 20 26
29 13 3 0 25 29 5
Э Н Г А Щ Э Е
11101 01101 00011 00000 11001 11101 00101

 

Исходный текст НЕ ПОЙМ
Шифрованный текст ЭНГАЩЭЕ

 

 

Метод Хилла

 

Зашифровать поговорку «сухой по мокрому не тужит».

 

А 1
Б 2
В 3
Г 4
Д 5
Е 6
Ж 7
З 8
И 9
Й 10
К 11
Л 12
М 13
Н 14
О 15
П 16
Р 17
С 18
Т 19
У 20
Ф 21
Х 22
Ц 23
Ч 24
Ш 25
Щ 26
Ь 27
Ы 28
Ъ 29
Э 30
Ю 31
Я 32
_ 33

;

 Пусть ;

Пример:

 

 

Разобьем поговорку на блоки по 4 буквы:

 

 

СУХО Й_ПО МОКР ОМУ_ НЕ_Т УЖИТ
(18 20 22 15) (10 33 16 15) (13 15 11 17) (15 13 20 33) (14 6 33 19) (20 7 9 19)
(4 18 24 24) (19 23 20 32) (16 5 1 21) (11 6 30 27) (14 6 15 24) (22 1 17 6)
ГСЧЧ ТЦУЯ ПДАФ КЕЭЬ НЕОЧ ХАРЕ

Итак, после преобразования по методу Хилла:

СУХОЙ_ПО_МОКРОМУ_НЕ_ТУЖИТ = ГСЧЧТЦУЯПДАФКЕЭЬНЕОЧХАРЕ

 

 

Цифирь Петра Первого

А ИР
Б ГО
В МО
Г НЕ
Д ЖЕ
Е БЕ
Ж РУ
З КА
И РА
Й НД
К АШ
Л ТЕ
М ЛЕ
Н ДИ
О ОК
П ОМ
Р ПА
С НИ
Т МА
У РШ
Ф ТК
Х КИ
Ц ТА
Ч РО
Ш СС
Щ ИЯ
Ь ГЫ
Ы ВЬ
Ъ СЭ
Э ЮК
Ю ЮЯ
Я ЭМ
_ ФУ


СУХОЙ_ПО_МОКРОМУ_НЕ_ТУЖИТ = НИРШКИОКНДФУОМОКФУЛЕОКПАОКЛЕРШФУДИБЕФУМАРШРУРАМА

 

 

8  Шифрование с помощью ключа.

 8.1 Ключ С = 3

С: (18+3) mod 33 = 21

У: (20+3) mod 33 = 23

Х: (22+3) mod 33 = 25

О: (15+3) mod 33 = 18

Й: (10+3) mod 33 = 13

_: (33+3) mod 33 = 3

П: (16+3) mod 33 = 19

М: (13+3) mod 33 = 16

К: (11+3) mod 33 = 14

Р: (17+3) mod 33 = 20

Н: (14+3) mod 33 = 17

Е: (6+3) mod 33 = 9

Т: (19+3) mod 33 = 21

Ж: (7+3) mod 33 = 10

И: (9+3) mod 33 = 12

 

СУХОЙ_ПО_МОКРОМУ_НЕ_ТУЖИТ = ФЦШСМВТСВПСНУСПЦВРИВХЦЙЛХ

 


8.1 2 Ключ = «Пуст мешок стоять не будет»

      P   K     C
А 0 00000 С 10000 П 01110 11110 Я
Б 1 00001 У 10010 У 10010 00000 А
В 2 00010 Х 10100 С 10000 00100 Д
Г 3 00011 О 01101 Т 10001 11100 Э
Д 4 00100 Й 01000 _ 11111 10111 Ш
Е 5 00101 _ 11111 М 01011 10100 Х
Ж 6 00110 П 01110 Е 00101 01011 М
З 7 00111 О 01101 Ш 10111 11010 Ы
И 8 01000 _ 11111 О 01101 10010 У
К 9 01001 М 01011 К 01001 00010 В
Л 10 01010 О 01101 _ 11111 10010 У
М 11 01011 К 01001 С 10000 11001 Ъ
Н 12 01100 Р 01111 Т 10001 11110 Я
О 13 01101 О 01101 О 01101 00000 А
П 14 01110 М 01011 Я 11110 10101 Ц
Р 15 01111 У 10010 Т 10001 00011 Г
С 16 10000 _ 11111 Ь 11011 00100 Д
Т 17 10001 Н 01100 _ 11111 10011 Ф
У 18 10010 Е 00101 Н 01100 01001 К
Ф 19 10011 _ 11111 Е 00101 11010 Ы
Х 20 10100 Т 10001 _ 11111 01110 П
Ц 21 10101 У 10010 Б 00001 10011 Ф
Ч 22 10110 Ж 00110 У 10010 10100 Х
Ш 23 10111 И 01000 Д 00100 01100 Н
Щ 24 11000 Т 10001 Е 00101 10100 Х
Ъ 25 11001            
Ы 26 11010            
Ь 27 11011            
Э 28 11100            
Ю 29 11101            
Я 30 11110            
_ 31 11111            

 

 

;

СУХОЙ_ПО_МОКРОМУ_НЕ_ТУЖИТ = ЯАДЭШХМЫУВУЪЯАЦГДФКЫПФХНХ





ПРИЛОЖЕНИЕ

Табл.1 Выбор полиномов для

Задания 1.

 

 

№ В списке № P ( x ) P 1 ( x ) C ( x )
1 10 6 4,6
2 11 5 7,3
3 12 4 5,8
4 13 3 11,2
5 14 2 13,4
6 15 1 6,2
7 7 6 1,13
8 11 5 5,6
9 12 4 11,3
10 13 3 14,6
11 14 2 2,9
12 6 1 5,10
13 10 6 3,7
14 11 5 8,6
15 12 4 6,11
16 13 3 1,5
17 14 2 8,5
18 9 1 2,4
19 10 6 8,3
20 11 5 4,2
21 12 4 8,1
22 13 3 2,6
23 14 2 5,7
24 7 1 5,11
25 7 6 3,8
26 12 3 13,4
27 9 6 6,2

 

Если P(x) задан неверно – (проверить!), то для четных № P(x) =13, для нечетных P(x) =7 .

 

Табл.2. Выбор параметров

для задания 2

 

 

 

открытый ключ

шифро-

текст

В списке

 

n=p*q

e

c

1

473

17

471

2

481

19

359

3

493

13

263

4

589

19

244

5

437

17

383

6

1073

13

342

7

667

17

219

8

377

35

148

9

899

19

675

10

551

13

174

11

473

19

419

12

481

5

133

13

493

55

355

14

589

77

445

15

437

65

158

16

1073

99

149

17

667

65

464

18

377

55

14

19

899

29

316

20

551

31

23

21

473

43

401

22

481

47

52

23

493

47

280

24

493

61

84

25

437

53

244

26

1073

37

174

27

667

31

67

 

 


Таблица 3. Выбор параметров для задания 4

P Открытый текст способ
1 37 Не пойман – не вор, не уличена – не гулёна. Вижинера, тарабарская грамота
2 23  Не робей, воробей, держись орлом. Маршрут.транспозиция, Плейфейера.
3 29 Не разводи усок на чужой кусок Хилла, цифирь Петра 1
4 31 Сурьма косых глаз не исправит. Парный шифр, Гронфельда
5 41 сухой по мокрому не тужит. Вижинера, тарабарская грамота
6 22 Повадится овца не хуже козы. Маршрут.транспозиция, Плейфейера.
7 43 Повадки волчьи, а душа заячья Хилла, цифирь Петра 1
8 37 По хозяину и собаке честь. Парный шифр, Гронфельда
9 23 Поздно щуке на сковороде  вспоминать о воде. Вижинера, тарабарская грамота
10 29 Поле глазасто, а лес ушаст. Маршрут.транспозиция, Плейфейера
11 31 Порозно думать вместе не жить Хилла, цифирь Петра 1
12 41 Посуленному только дурак рад. Парный шифр, Гронфельда
13 23 промеж худых и хорошему плохо.. Вижинера, тарабарская грамота
14 43 Проживет Фаддей и без затей Маршрут.транспозиция, Плейфейера
л15 37 сухой по мокрому не тужит.   Хилла, цифирь Петра 1
16 23 Пуст мешок стоять не будет. Парный шифр, Гронфельда
17 29 Под каждой крышей свои мыши Вижинера, тарабарская грамота
18 31 Пустой колос голову кверху носит. Маршрут.транспозиция, Плейфейера  
19 41 Родной куст и зайцу дорог. Хилла, цифирь Петра 1
20 29 Спесь росту не прибавит. Парный шифр, Гронфельда
21 43 Не пойман-не вор, не уличена - не гулёна. Вижинера, тарабарская грамота
22 37  Не робей, воробей, держись орлом. Маршрут.транспозиция, Плейфейера  
23 23 Не разводи усок на чужой кусок   Хилла, цифирь Петра 1
24 29 Сурьма косых глаз не исправит.   Парный шифр, Гронфельда
25 31 сухой по мокрому не тужит.   Вижинера, тарабарская грамота
26 41 Повадится овца не хуже козы. Маршрут.транспозиция, Плейфейера
27 37 Повадки волчьи, а душа заячья   Хилла, цифирь Петра 1
28 43 По хозяину и собаке честь.   Парный шифр, Гронфельда
29 31 Поздно щуке на сковороде вспоминать о воде. Вижинера, тарабарская грамота

Задания на лабораторные работы

 

 

Задание 1

 

Зашифровать и расшифровать открытый текст с помощью упрощенного алгоритма VS-AES. Выполнить 2 итерации.  Параметрами алгоритма являются:

 

· Многочлены для ByteSub :  

и       

· с коэффициентами из GF(2), которые можно задать двоичным вектором.

Например, многочлен  можно задать двоичным вектором (1 1 0 1) или десятичным числом “13 ”, соответствующим этому вектору.

· Многочлен первой степени для MixColumn c коэффициентами из , задаваемый двумя числами из .
Например, пара чисел (3.8) соответствует многочлену

· Ключ К, состоящий из четырех полубайтов, выраженных десятичными числами.

Например, К = 12 1 4 14 = 1100 0001 0100 1110 (16 бит).

· Открытый текст того же формата,

Например: Р = 1 5 6 11 = 0001 0101 0110 1011.

В приведенных арифметических выражениях вся арифметика в . Параметром задания является номер в списке группы  i   и номер группы   k = 1 или 2 или 3. Многочлены  и      и    заданы в таблице 1 десятичными числами.

Ключ                     .

Открытый текст   .

Задание начать с построения поля. Далее – сгенерировать цикловые ключи, вывести их на печать. Затем сгенерировать S - box и Mixcolumn   и обратные к ним преобразования для всех элементов поля (в виде таблицы). Все шаги алгоритма оформить в виде двух состояний – вход-выход.

 

 

Задание 2.

 В таблице 2 приведены открытые ключи собеседника по секретной переписке с помощью алгоритма RSA и его секретное зашифрованное сообщение.  Требуется:

1. Выработать свои секретные ключи.

2. Расшифровать посланное секретное сообщение.

3. Выработать общий ключ для обеспечения секретности на основе открытого ключа.

4. Послать абоненту расшифрованное верифицированное сообщение (т.е. сообщение и его цифровая подпись)

 

Задание 3.

Открытый элемент Р задан в табл. 3 – графа 2. Найти примитивный элемент поля. Считая, что секретный ключ каждого участника равен номеру студента в списке группы    i , вычислить ключ обмена для участника с номером 35 – i по алгоритму Диффи – Хэллмана

Задание 4

Зашифровать поговорку, выбранную из списка в соответствии с номером студента в группе различными спопобами:

 

1. спомощью способов, указанных в таблице3. графа 2;

2. С помощью ключа (пароля), где в качестве ключа используем:

1. константу с=3;

2. следующую в списке поговорку, используя алфавит Z33 = (А….Я, е=ё + пробел);

3.  псевдослучайную последовательность, сгенерированную линейным рекуррентным генератором. Зашифровать 7 первых символов, используя алфавит Z32 и равномерный код.  ПСП генерируется матрицей 5*5.

Полученное сообщение подписать, используя алгоритм Эль - Гамаля. В качестве хэш-функции использовать сумму пятиразрядных блоков по модулю 2

 


Примеры выполнения задания

 

 

Пример выполнения Задания1. Упрощенный алгоритм Rijndael,.

 

Построение поля

 

Вариант № 7, группа 2091 (№ 1)

Номер в списке группы              i = 7

Номер группы                   k = 1

 

В приведенных арифметических выражениях вся арифметика в GF(24).

За неприводимый многочлен возьмем P(x) = x4+x+1.

Тогда за примитивный элемент можно взять a = x.

 

     Элементы поля

a 0010 2 x a6 1100 12 x3+x2 a11 1110 x3+x2+x 14
a2 0100 4 x2 a7 1011 11 x3+x+1 a12 1111 x3+x2+x+1 15
a3 1000 8 x3 a8 0101 5 x2+1 a13 1101 x3+x2+1 13
a4 0011 3 x+1 a9 1010 10 x3+x a14 1001 x3+1 9
a5 0110 6 x2+x a10 0111 7 x2+x+1 a15 0001 1 1

 


Обратные элементы

a-1 a14 a-6 a9 a-11 a4
a-2 a13 a-7 a8 a-12 a3
a-3--3 a12 a-8 a7 a-13 a2
a-434 a11 a-9 a6 a-14 a
a35-5 a10 a-10 a5 a-15 a15

 

Многочлены для ByteSub

 

P(x) P1(x) C(x)
7 7 6 1, 13

 

p(x) =              710 = 01112 = x2 + x + 1 =     a10

p1(x) =   610 = 01102 = x2 + x = a5

 

Многочлен для MixColumn

 

c(x) = x + 13 = 0001 * x + 1101

 

 

Ключ К

 

i * 2 / 3 = 7 * 2 / 3 = a10 * a * a-4 = a11 * a11 = a15 * a7 = a7 = 10112

(i – k) / 7 = (7 - 1)  / 7 = (0111 + 0001) * a-10 = 0110 * a5 = a5 * a5 = a10 = 01112

(3 * i + 4) / k = (3 * 7 + 4) / 1 = (a4 * a10 + 0010) = a14 + 0010 = 1001 + 0010 = 10112

i – 7 = 7 – 7 = 0

K = (1011 0111 1011 0000)

Открытый текст P

 

 

P = (0101 1110 0011 0010)

 

S преобразование и обратное для всех элементов

 

p(x) =              710 = 01112 = x2 + x + 1 =     a10

p1(x) =   610 = 01102 = x2 + x = a5

S(x) = x-1 p + p1

 

S(0) = a5 =                                                                          0110

S(a) = a-1 a10 + a5 = a14 a10 + 0110 = a9 + 0110 = 1010 + 0110 = 1100

S(a2) = a-2 a10 + a5 = a13 a10 + 0110 = a8 + 0110 = 0101 + 0110 = 0011

S(a3) = a-3 a10 + a5 = a12 a10 + 0110 = a7 + 0110 = 1011 + 0110 = 1101

S(a4) = a-4 a10 + a5 = a11 a10 + 0110 = a6 + 0110 = 1100 + 0110 = 1010

S(a5) = a-5 a10 + a5 = a10 a10 + 0110 = a5 + 0110 = 0110 + 0110 = 0000

S(a6) = a-6 a10 + a5 = a9 a10 + 0110 = a4 + 0110 = 0011 + 0110 = 0101

S(a7) = a-7 a10 + a5 = a8 a10 + 0110 = a3 + 0110 = 1000 + 0110 = 1110

S(a8) = a-8 a10 + a5 = a7 a10 + 0110 = a2 + 0110 = 0100 + 0110 = 0010

S(a9) = a-9 a10 + a5 = a6 a10 + 0110 = a1 + 0110 = 0010 + 0110 = 0100

S(a10) = a-10 a10 + a5 = a5 a10 + 0110 = 0001 + 0110 =            0111

S(a11) = a-11 a10 + a5 = a4 a10 + 0110 = a14 + 0110 = 1001 + 0110 =     1111

S(a12) = a-12 a10 + a5 = a3 a10 + 0110 = a13 + 0110 = 1101 + 0110 =     1011

S(a13) = a-13 a10 + a5 = a2 a10 + 0110 = a12 + 0110 = 1111 + 0110 =     1001

S(a14) = a-14 a10 + a5 = a1 a10 + 0110 = a11 + 0110 = 1110 + 0110 =     1000

S(a15) = a-15 a10 + a5 = a15 a10 + 0110 = a10 + 0110 = 0111 + 0110 =   0001

 

 

Обратные преобразования

S-1(0110) = 0 = 0000 S-1(1100) = a = 0010 S-1(0011) = a2 = 0100 S-1(1101) = a3 = 1000 S-1(1010) = a4 = 0011 S-1(0000) = a5 = 0110 S-1(0101) = a6 = 1100 S-1(1110) = a7 = 1011 S-1(0010) = a8 = 0101 S-1(0100) = a9 = 1010 S-1(0111) = a10 = 0111 S-1(1111) = a11 = 1110 S-1(1011) = a12 = 1111 S-1(1001) = a13 = 1101 S-1(1000) = a14 = 1001 S-1(0001) = a15 = 0001

 

 

Расширение ключа, цикловые константы

C[2] = RC[2] 0000 = a1 0000 =

C[4] = RC[4] 0000 = a3 0000 =

C[6] = RC[6] 0000 = a5 0000 =

 

 

W[0] = Key[0] =                                             

W[1] = Key[1] =                                             

W[2] = W[0] + SB(R(W[1])) + C[2] =  + SB(R( )) +

  

W[2] =  +  +  =                     

W[3] = W[1] + W[2] =  +  =    

W[4] = W[2] + SB(R(W[3])) + C[4] =  + SB(R( )) +

  

W[4] =  +  +  =                      

W[5] = W[3] + W[4] =  +  =             

W[6] = W[4] + SB(R(W[5])) + C[6] =  + SB(R( )) +

  

 

W[6] =  +  +  =                      

Шифрование

0)

 

1.1) SubBytes

 

 

1.2) ShiftRow

 

 

1.3) MixColumn

 

c(x) = x + 13 = 0001 * x + 1101

 

 

=

 

=

 

=

 

 

1.4) AddRoundKey

W[2] = W[3] =

 

 

2.1) SubBytes

 

 

2.2) ShiftRow

2.3) AddRoundKey

 

W[4] = W[5] =

 

Зашифрованный текст

 С = (5, 1, 5, 15)

 

Расшифровка

 

0) x = x + k2

1.1) x = r -> (x)

1.2) x = s-1 (x)

1.3) x = x + k1

1.4) x = m-1 x

2.1) x = r -> (x)

2.2) x = s-1 (x)

2.3) x = x + k0

 

0)

 

1.1) ShiftRow >

 

 

 

SubBytes

 

 

AddRoundKey

 

 

1.4) MixColumn

 

 

 

 

=

 

 

 

 

 

 

 

 

2.1) ShiftRow >

 

2.2) SubBytes

 

2.3) AddRoundKey

 

P = (0101 1110 0011 0010)

После шифровки и расшифровки был получен исходный открытый текст.


 

Пример выполнения Задания1. Упрощенный алгоритм Rijndael,.

 

 


ПОСТРОЕНИЕ ПОЛЯ

В приведенных арифметических выражениях вся арифметика в GF(24).

Неприводимый многочлен P(x) = x4+x+1.

Примитивный элемент a = x.

                                             

 

 



Обратные элементы:







ПАРАМЕТРЫ АЛГОРИТМА

i = 15, k = 1

Многочлены для ByteSub :

p1(x) = 12 = 1100 = x3 + x2

p0(x) = 4 = 0100 = x2

 

Многочлен для MixColumn :

с(x) = 6x + 11 = 0110*x + 1011

 

Открытый ключ К:

K = (10, 2, 6, 8)  

1010 0110
0010 1000

Открытый текст:

 

P = (5, 14, 2, 7)

0101 0010
1110 0111

S - box и обратное преобразование:

 

=


Обратное преобразование:

;

;

;       S -1:

7

Матрица М:

 

Матрица :

 

x     x-1 S(x) S-1(x)
0 0000 0 0000 0100 0010
α 0010 2 1001 1110 1111
α2 0100 4 1101 1101 1001
α3 1000 8 1111 0100 0011
α4 0011 3 1110 1000 0001
α5 0110 6 0111 0010 1111
α6 1100 12 1010 1011 1110
α7 1011 11 0101 1011 1100
α8 0101 5 1011 0111 1110
α9 1010 10 1100 0001 0111
α10 0111 7 0110 1110 0101
α11 1110 14 0011 0101 0010
α12 1111 15 1000 0010 0010
α13 1101 13 0100 0111 0100
α14 1001 9 0010 1101 1010
α15 0001 1 0001 1000 1010

 

 

Дата: 2019-03-05, просмотров: 246.