Реферат: Алгоритм формирования ключей в процессе функционирования DES - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Алгоритм формирования ключей в процессе функционирования DES

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 1549 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

15 « Алгоритм формирования ключей в процессе функционирования DES » Оглавление Техническое задание 3 Алгоритм формирования ключей в процессе функционирования DES . 3 Работа алгоритма 4 1 шаг. Перестановки битов ключа с использованием таблицы перестановок. 5 2 шаг. Разбиение ключа. 6 3 шаг. Создание 16 - т и подключей путем сдвига. 7 4 шаг. Перестановка битов ключа с использованием таблицы PC 1. 8 Исходный код 9 Пример работы программы 15 Техническое задание 1. Реализовать алгоритм формирования ключей в процессе функционирования DES на языке программирования C ++. 2. Провести тест программы. Алгоритм формирования ключей в процессе функционирования DES Формирование ключей – алгоритм, позволяющий получить по относительно короткому ключу шифрования последовательность раундовых ключей. Входные данные: Ключ состоит из 8 символов или 8 байт. Соответственно ключ имеет размер 64 байта. Но размер ключа используется только для записи (для организации данных). Фактически, каждый 8 бит отбрасывается и эффективный размер ключа – 56 бит. Работа алгоритма 1 шаг. Перестановки битов ключа с использованием таблицы перестановок . Для примера введем: olga 1234 Заданный ключ в двоичном представлении: 0110111101101100011001110110000100110001001100100011001100110100 В начале над ключом шифра выполняется операция B, которая сводится к выбору определенных бит и их перестановке, как это показано в таблицей . Причем, первые четыре строки определяют, как выбираются биты последовательности C(0) (первым битом C(0) будет бит 57 бит ключа шифра, затем бит 49 и т.д. , а последними битами биты 44 и 36 ключа шифра), а следующие четыре строки – как выбираются биты последовательности D(0) ( т.е. последовательность D(0) будем состоять из битов 63,55, … , 1 2, 4 ключа шифра). 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4 В результате перестановки ключ будет выглядеть так: 00001111111111111111000000000101110101100101100001110011 2 шаг. Разбиение ключа На этом шаге осуществляется разбиение ключа на 2 половины C 0 и D 0 . Каждая половина содержит 28 бит. C 0 : 0000111111111111111100000000 D 0 : 0101110101100101100001110011 3 шаг. Создание 16 - т и подключей путем сдвига После определения C(0) и D(0) рекурсивно определяются C(i) и D(i), i=1,2, … , 1 6. Для этого применяются операции сдвига влево на один или два бита в зависимости от номера шага итерации, как это показано в таблице « Ф ункция сдвига Si » . Операции сдвига выполняются для последовательностей C(i) и D(i) независимо. Например, последовательность C(3) получается, посредством сдвига влево на две позиции последовательности C(2), а последовательность D(3) – посредством сдвига влево на две позиции последовательности D(2). Следует иметь в виду, что выполняется циклический сдвиг влево. Например, единичный сдвиг влево последовательности C(i) приведет к тому, что первый бит C(i) станет последним и последовательность бит будет следующая: 2,3, … , 28,1. Таблица «Функция сдвига Si» 1 1 2 1 3 2 4 2 5 2 6 2 7 2 8 2 9 1 10 2 11 2 12 2 13 2 14 2 15 2 16 1 В результате сдвига получаем следующие пары Количество сдвигов Созданные пары 1 C 1 : 0001111111111111111000000000 D 1 : 1011101011001011000011100110 1 C 2 : 0011111111111111110000000000 D 2 : 0111010110010110000111001101 2 C 3 : 1111111111111111000000000011 D 3 : 1101011001011000011100110111 2 C 4 : 1111111111111100000000001111 D 4 : 0101100101100001110011011101 2 C 5 : 1111111111110000000000111111 D 5 : 0110010110000111001101110101 2 C 6 : 1111111111000000000011111111 D 6 : 1001011000011100110111010110 2 C 7 : 1111111100000000001111111111 D 7 : 0101100001110011011101011001 2 C 8 : 1111110000000000111111111111 D 8 : 0110000111001101110101100101 1 C 9 : 1111100000000001111111111111 D 9 : 1100001110011011101011001011 2 C 10 : 1110000000000111111111111111 D 10 : 0000111001101110101100101100 2 C 11 : 1000000000011111111111111110 D 11 : 0011100110111010110010110000 2 C 12 : 0000000001111111111111111000 D 12 : 1110011011101011001011000011 2 C 13 : 0000000111111111111111100000 D 13 : 1001101110101100101100001110 2 C 14 : 0000011111111111111110000000 D 14 : 0110111010110010110000111001 2 C 15 : 0001111111111111111000000000 D 15 : 1011101011001011000011100110 1 C 16 : 0011111111111111110000000000 D 16 : 0111010110010110000111001101 4 шаг. Перестановка битов ключа с использованием таблицы PC 1 До финальной перестановки битов ключей, необходимо слияние каждой пары данных. После того, как для каждого битового блока C n D n , где 1<= n <=16 осуществиться соответствующая перестановка по таблице (см ниже), формируя ключи. Только 48 бит каждой объединенной пары сохраняется в перестановленном ключе. 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 Все подключи: K 1 : 111001111101001101110010001100110001010011011101 K 2 : 111001101101001101110011111011100011011001010110 K 3 : 101011111101001111011011001111011110001011101010 K 4 : 001111100101001111011011011101001101110001000011 K 5 : 001111100101100111011001100011101010010001111110 K 6 : 000111110110100111011101101010011111111011000000 K 7 : 000111100110110110011101011111001100011000110011 K 8 : 010111100010110110101101100111110100110001001110 K 9 : 010110111010110110101101010001010001111010110110 K 10 : 110110001010110010101111110110010010100011111001 K 11 : 111100001010111010100110001000111101101000011101 K 12 : 111100011011111000100110000101110011010010110110 K 13 : 111000011011011001110110111010010000100011100101 K 14 : 111001001101011001110110010001101110101010011111 K 15 : 111001111101001101110010001100110001010011011101 K 16 : 111001101101001101110011111011100011011001010110 Исходный код #include #include #include #include int mai n (int argc, char *argv[] ) int i , b, y, r, j, v, p, m, l, f, u, k, a, s, q, D [100 ] [1 00] , Y [100 ] [1 00] , U [100 ] [1 00] , X [1000 ] [1 000] , E [100 ] [1 00] , G [100 ] [1 00] , W [100 ] [1 00] , P [100 ] [1 $ double z; int key[16]= 1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1 ; char A[1000]; char B[200]; char N[200]; char T[200]; char C[1000]; char Z[43]; char R[43]; char L[43]; char *str2; char *str; char *str1; char *str3; char *str4; char *str5; char d[100]; print f ( « \nVvedite key\n » ) ; str=(char * ) (m alloc(1000)); for (i=0 ; i <1000 ; i ++ ) scan f ( « %c » , &str[i]); if (str[i]==(char ) 1 0 ) m=i; break; if (str[i]==(char ) 3 2 ) str[i]=157; if (m!=8 ) printf ( « \nKey neveren\n » ) ; for (i=0 ; i 27 ) R [i - 2 8]=C[i]; printf ( « \n » ) ; for (i=0 ; i <28 ; i ++ ) printf ( « %d » , Z [i]); printf ( « \n » ) ; for (i=0 ; i <28 ; i ++ ) printf ( « %d » , R [i]); printf ( « \n » ) ; printf ( « \n » ) ; for (j=0 ; j <16 ; j ++ ) v=key[j]; for (i=0 ; i <28 ; i ++ ) if (v==2 ) Y[26 ] [j ]=Z[0]; Y[27 ] [j ]=Z[1]; U[26 ] [j ]=R[0]; U[27 ] [j ]=R[1]; if (v==1 ) Y[27 ] [j ]=Z[1]; U[27 ] [j ]=R[1]; if (i<(28 - v ) ) Y[i ] [j ]= Z [i+ v]; U[i ] [j ]= R [i+ v]; Z[i]=Y[i ] [j ]; R[i]=U[i ] [j ]; /*printf ( « %d » , U [i ] [j ]);*/ /*printf ( « \n » ) ;*/ for (j=0 ; j <16 ; j ++ ) for (i=0 ; i <56 ; i ++ ) if (i<28 ) W[i ] [j ]=Y[i ] [j ]; if (i>27 ) W[i ] [j ]= U [i - 2 8 ] [j ]; printf ( « %d » , W [i ] [j ]); printf ( « \n » ) ; for (j=0 ; j <16 ; j ++ ) P[0 ] [j ]=W[14 ] [j ] ; P [1 ] [j ]=W[17 ] [j ] ; P [2 ] [j ]=W[11 ] [j ] ; P [3 ] [j ]=W[24 ] [j ] ; P [4 ] [j ]=W[1 ] [j ] ; P [5 ] [j ]=W[5 ] [j ]; P[6 ] [j ]=W[3 ] [j ] ; P [7 ] [j ]=W[28 ] [j ] ; P [8 ] [j ]=W[15 ] [j ] ; P [9 ] [j ]=W[6 ] [j ] ; P [10 ] [j ]=W[21 ] [j ] ; P [11 ] [j ]=W[10 ] [j ]; P[12 ] [j ]=W[23 ] [j ] ; P [13 ] [j ]=W[19 ] [j ] ; P [14 ] [j ]=W[12 ] [j ] ; P [15 ] [j ]=W[4 ] [j ] ; P [16 ] [j ]=W[26 ] [j ] ; P [17 ] [j ]=W[8 ] [j ]; P[18 ] [j ]=W[16 ] [j ] ; P [19 ] [j ]=W[7 ] [j ] ; P [20 ] [j ]=W[27 ] [j ] ; P [21 ] [j ]=W[20 ] [j ] ; P [22 ] [j ]=W[13 ] [j ] ; P [23 ] [j ]=W[2 ] [j ]; P[24 ] [j ]=W[41 ] [j ] ; P [25 ] [j ]=W[52 ] [j ] ; P [26 ] [j ]=W[31 ] [j ] ; P [27 ] [j ]=W[37 ] [j ] ; P [28 ] [j ]=W[47 ] [j ] ; P [29 ] [j ]=W[55 ] [j ]; P[30 ] [j ]=W[30 ] [j ] ; P [31 ] [j ]=W[40 ] [j ] ; P [32 ] [j ]=W[51 ] [j ] ; P [33 ] [j ]=W[45 ] [j ] ; P [34 ] [j ]=W[33 ] [j ] ; P [35 ] [j ]=W[48 ] [j ]; P[36 ] [j ]=W[44 ] [j ] ; P [37 ] [j ]=W[49 ] [j ] ; P [38 ] [j ]=W[39 ] [j ] ; P [39 ] [j ]=W[56 ] [j ] ; P [40 ] [j ]=W[34 ] [j ] ; P [41 ] [j ]=W[53 ] [j ]; P[42 ] [j ]=W[46 ] [j ] ; P [43 ] [j ]=W[42 ] [j ] ; P [44 ] [j ]=W[50 ] [j ] ; P [45 ] [j ]=W[36 ] [j ] ; P [46 ] [j ]=W[29 ] [j ] ; P [47 ] [j ]=W[32 ] [j ]; for (j=0 ; j <16 ; j ++ ) for (i=0 ; i <48 ; i ++ ) printf ( « %d » , P [i ] [j ]); printf ( « \n » ) ; Пример работы программы
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Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Теперь первый вопрос на пресс-конференциях Пескова: "Который час?"
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по программированию "Алгоритм формирования ключей в процессе функционирования DES", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru