Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364150
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62792)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21320)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21697)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8694)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3463)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20645)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Курсовая работа: Программная реализация алгоритма шифрования DES. Режим ECB

Название: Программная реализация алгоритма шифрования DES. Режим ECB
Раздел: Рефераты по информатике, программированию
Тип: курсовая работа Добавлен 23:04:50 11 февраля 2011 Похожие работы
Просмотров: 6695 Комментариев: 2 Оценило: 0 человек Средний балл: 0 Оценка: неизвестно     Скачать

Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

Технологический институт Федерального государственного образовательного учреждения высшего профессионального образования

Южный федеральный университет

Факультет информационной безопасности

Кафедра БИТ

Пояснительная записка

к курсовому проекту

на тему:

Программная реализация алгоритма шифрования DES . Режим ЕСВ

по дисциплине

Программно-аппаратные средства защиты информации

Проверил

Г.А. Евстафьев

Таганрог 2010

СОДЕРЖАНИЕ

Введение

1. Описание алгоритма

2. Основные режимы работы алгоритма DES

3. Разработка программной реализации алгоритма

Заключение

Список использованных источников

Приложение А

Введение

Симметричные криптосистемы (также симметричное шифрование, симметричные шифры) — способ шифрования, в котором для (за)шифрования и расшифровывания применяется один и тот же криптографический ключ. До изобретения схемы асимметричного шифрования единственным существовавшим способом являлось симметричное шифрование. Ключ алгоритма должен сохраняться в секрете обеими сторонами. Ключ алгоритма выбирается сторонами до начала обмена сообщениями.

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

Классическим примером таких алгоритмов являются симметричные криптографические алгоритмы, перечисленные ниже:

- простая подстановка;

- одиночная перестановка по ключу;

- двойная перестановка;

- перестановка "Магический квадрат";

- простая перестановка.

Полная утрата всех статистических закономерностей исходного сообщения является важным требованием к симметричному шифру. Для этого шифр должен иметь «эффект лавины» — должно происходить сильное изменение шифроблока при 1битном изменении входных данных (в идеале должны меняться значения 1/2 бит шифроблока).

Также важным требованием является отсутствие линейности (то есть условия

а(ф) чщк а(и) = а(ф чщк и))б

в противном случае облегчается применение дифференциального криптоанализа к шифру.

В настоящее время симметричные шифры — это:

- блочные шифры. Обрабатывают информацию блоками определённой длины (обычно 64, 128 бит), применяя к блоку ключ в установленном порядке, как правило, несколькими циклами перемешивания и подстановки, называемыми раундами. Результатом повторения раундов является лавинный эффект — нарастающая потеря соответствия битов между блоками открытых и зашифрованных данных.

- поточные шифры, в которых шифрование проводится над каждым битом либо байтом исходного (открытого) текста с использованием гаммирования. Поточный шифр может быть легко создан на основе блочного (например, ГОСТ 28147-89 в режиме гаммирования), запущенного в специальном режиме.

Существует множество (не менее двух десятков) алгоритмов симметричных шифров, существенными параметрами которых являются:

- стойкость;

- длина ключа;

- число раундов;

- длина обрабатываемого блока;

- сложность аппаратной/программной реализации;

- сложность преобразования.

В данном курсовом проекте предлагается программная реализация алгоритма шифровании DES(режим ЕСВ).

1. Описание алгоритма

Стандарт шифрования данных DESопубликован в 1977 г. Национальным бюро стандартом США.

Стандарт DESпредназначен для защиты от несанкционированного доступа к важной, но несекретной информации в государственных и коммерческих организациях США. Алгоритм, положенный в основу стандарта, распространялся достаточно быстро, и уже в 1980 г. Был одобрен Национальным институтом стандартов и технологий США. С этого момента DESпревращается в стандарт не только по названию, но и фактически. Появляются программное обеспечение и специализированные микроЭВМ, предназначенные для шифрования и расшифрования информации в сетях передачи данных.

К настоящему времени DESявляется наиболее распространенным алгоритмом, используемым в системах защиты коммерческой информации. Более того, реализация алгоритма DESв таких системах становится признаком хорошего тона.

Основные достоинства алгоритма DES:

- используется только один ключ длиной 56 бит;

- зашифровав сообщение с помощью одного пакета программ, для расшифровки можно использовать любой другой пакет программ, соответствующий стандарту DES;

- относительная простота алгоритма обеспечивает высокую скорость обработки;

- достаточно высокая стойкость алгоритма.

Первоначально метод, лежащий в основе стандарта DES, был разработал фирмой IBMдля своих целей и реализован в виде системы «Люцифер». Система «Люцифер» основана на комбинировании методов подстановки и перестановки и состоит из чередующейся последовательности блоков перестановки и подстановки. В ней использовался ключ длиной 128 бит, управлявший состояниями блоков перестановки и подстановки. Система «Люцифер» оказалась весьма сложной для практической реализации из-за относительно малой скорости шифрований.

Алгоритм DESтакже использует комбинацию подстановок и перестановок. DESосуществляет шифрование 64-битных блоков данных с помощью 64-битового ключа, в котором значащими являются 56 бит (остальные 8 бит-проверочные биты для контроля на четность). Дешифрование в DESявляется операцией, обратной шифрованию, и выполняется путем повторения операций шифрования в обратной последовательности. Обобщенная схема процесса шифрования в алгоритме DESпоказана на рисунке 1.

Рисунок 1 - Обобщенная схема шифрования в алгоритме DES

Следует отметить, что все приводимые таблицы, являются стандартными, и должны включаться в реализацию алгоритма в неизменном виде.

Все перестановки и коды в таблицах подобраны разработчиками таким образом, чтобы максимально затруднить процесс расшифровки путем подбора ключа. Описание алгоритма приведено на рисунке 2.


Рисунок 2 - Структура алгоритма шифрования DES

Пусть из файла исходного текста считан очередной 64-битовый блок Т. Этот блок Т преобразуется с помощью матрицы начальной перестановки IP(таблица 1).

Таблица 1

Матрица начальной перестановки IP

58 50 42 34 26 18 10 02

60 52 44 36 28 20 12 04

62 54 46 38 30 22 14 06

64 56 48 40 32 24 16 08

57 49 41 33 25 17 09 01

59 51 43 35 27 19 11 03

61 53 45 37 29 21 13 05

63 55 47 39 31 23 15 07

Биты входного блока Т переставляются в соответствии с матрицей IP: бит 58 входного блока Т становится битом 1, бит 50-битом 2 и т.д. Эту перестановку можно описать выражением Т0 =IP(T). Полученная последовательность битов Т0 разделяется на две последовательности: L0 - левые и старшие биты, R0- правые и младшие биты, каждая из которых содержит 32 бита.

Затем выполняется итеративный процесс шифрования, состоящий из 16 циклов. Пусть Ti -результат I-й итерации:

Ti =Li Ri ,

где Li =t1 t2… t32 ; Ri =t33 t34 …t64. Тогда результат I-й итерации описывается следующими формулами:

Li =Ri-1 , i=1,2,…,16;

Ri =Li-1 xor f(Ri-1 ,Ki ), i=1,2,…,16.

Функции fназывается функцией шифрования. Ее аргументами являются последовательность Ri -1, получаемая на предыдущем шаге итерации, и 48-битовый ключ Ki , который является результатом преобразования 64-битового ключа шифра К.

На последнем шаге итерации получают последовательность R16 и L16 , который конкатенируются в 64-битовую последовательность R16 L16 .

По окончании шифрования осуществляется восстановление позиций битов с помощью матрицы обратной перестановки IP-1 (таблица 2).

Таблица 2

Матрица обратной перестановки IP-1

40 08 48 16 56 24 64 32

39 07 47 15 55 23 63 31

38 06 46 14 54 22 62 30

37 05 45 13 53 21 61 29

36 04 44 12 52 20 60 28

35 03 43 11 51 19 59 27

34 02 42 10 50 18 58 26

33 01 41 09 49 17 57 25

Процесс расшифрования данных является инверсным по отношению к процессу шифрования. Все действия должны быть выполнены в обратном порядке. Это означает, что расшифровываемые данные сначала переставляются в соответствии с матрицей IP-1 , а затем над последовательностью битов R16 L16 выполняются те же действия, что и в процессе шифрования, но в обратном порядке.

Итеративный процесс расшифрования может быть описан следующими формулами:

Ri-1 = Li , i = 1, 2, ..., 16;Li-1 = Ri xor f(Li , Ki ), i = 1, 2, ..., 16 .

На 16-й итерации получают последовательности L0 и R0 , которые конкатенируют в 64-битовую последовательность L0 R0 .

Затем позиции битов этой последовательности переставляют в соответствии с матрицей IP. Результат такой перестановки - исходная 64-битовая последовательность.

Теперь рассмотрим функцию шифрования f(Ri-1, Ki ). Она показана на рисунке 3.

Для вычисления значения функции fиспользуются:

- функция Е (расширение 32 бит до 48);

- функция S1,S2,…,S8 (преобразование 6-битового числа в 4-битовое);

- функция Р (перестановка битов в 32-битовой последовательности).


Рисунок 3 - Вычисление функции f(R(i-1), K(i))

Функция расширения Е определяется табл.3. В соответствии с этой таблицей первые 3 бита Е(Ri-1 ) - это биты 32, 1 и 2, а последние - 31, 32 и 1.

Таблица 3

Функция расширения E

32 01 02 03 04 05
04 05 06 07 08 09
08 09 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 01

Результат функции Е(Ri-1 ) есть 48-битовая последовательность, которая складывается по модулю 2 (операция xor) с 48-битовым ключом Кi . Получается 48-битовая последовательность, которая разбивается на восемь 6-битовых блоков B1 B2 B3 B4 B5 B6 B7 B8 . То есть:

E(Ri -1 ) xorKi = B1 B2 ...B8 .

Функции S1, S2, ... , S8 определяются таблицей 4.

криптосистема алгоритм защита информация


Таблица 4

Функции преобразования S1, S2, ..., S8

Номер столбца

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Номер

строки

0

1

2

3

14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7

0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8

4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0

15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

S1

0

1

2

3

15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10

3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5

0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15

13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9

S2

0

1

2

3

10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8

13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1

13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7

1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12

S3

0

1

2

3

7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15

13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9

10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4

3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14

S4

0

1

2

3

2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9

14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6

4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14

11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3

S5

0

1

2

3

12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11

10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8

9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6

4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13

S6

0

1

2

3

4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1

13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6

1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2

6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12

S7

0

1

2

3

13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7

1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2

7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8

2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11

S8

К таблице 4 требуются дополнительные пояснения. Пусть на вход функции-матрицы Sj поступает 6-битовый блок B = b1 b2 b3 b4 b5 b6 , тогда двухбитовое число b1 b6 указывает номер строки матрицы, а b2 b3 b4 b5 - номер столбца. Результатом Sj (Bj ) будет 4-битовый элемент, расположенный на пересечении указанных строки и столбца [1].

Например, В1 =011011. Тогда S1(В1 ) расположен на пересечении строки 1 и столбца 13. В столбце 13 строки 1 задано значение 5. Значит, S1 (011011)=0101.

Применив операцию выбора к каждому из 6-битовых блоков B1 , B2 , ..., B8 , получаем 32-битовую последовательность S1 (B1 )S2 (B2 )S3 (B3 )...S8 (B8 ).

Наконец, для получения результата функции шифрования надо переставить биты этой последовательности. Для этого применяется функция перестановки P (табл.5). Во входной последовательности биты перестанавливаются так, чтобы бит 16 стал битом 1, а бит 7 - битом 2 и т.д.

Таблица 5

Функция перестановки P

16 07 20 21
29 12 28 17
01 15 23 26
05 18 31 10
02 08 24 14
32 27 03 09
19 13 30 06
22 11 04 25

Таким образом,

f(Ri-1 , Ki ) = P(S1 (B1 ),...S8 (B8 ))

Как нетрудно заметить, на каждой итерации используется новое значение ключа Ki . Новое значение ключа Кi вычисляется из начального ключа К(рис.4). Ключ К представляет собой 64-битовый блок с 8 битами контроля по четности, расположенными в позициях 8,16,24,32,40,48,56,64. Для удаления контрольных битов и подготовки ключа к работе используется функция Gпервоначальной подготовки ключа (таблица 6)

Рисунок 4 - Блок-схема алгоритма вычисления ключа Ki

Таблица 6

Матрица G первоначальной подготовки ключа

57 49 41 33 25 17 09
01 58 50 42 34 26 18
10 02 59 51 43 35 27
19 11 03 60 52 44 36
63 55 47 39 31 23 15
07 62 54 46 38 30 22
14 06 61 53 45 37 29
21 13 05 28 20 12 04

Результат преобразования G(K) разбивается на два 28-битовых блока C0 и D0 , причем C0 будет состоять из битов 57, 49, ..., 44, 36 ключа K, а D0 будет состоять из битов 63, 55, ..., 12, 4 ключа K. После определения C0 и D0 рекурсивно определяются Ci и Di , i=1...16. Для этого применяют циклический сдвиг влево на один или два бита в зависимости от номера итерации, как показано в таблице 7.

Операции сдвига выполняются для последовательностей Ci и Di независимо. Например, последовательность C3 получается посредством циклического сдвига влево на две позиции последовательности С2 , а последовательность D3 – посредством сдвига влево на две позиции последовательности D2 ,C16 и D16 получаются из С15 и D15 посредством сдвига влево на одну позицию [2].

Таблица 7

Таблица сдвигов для вычисления ключа

Номер итерации Сдвиг (бит)

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

1

1

2

2

2

2

2

2

1

2

2

2

2

2

2

1

Ключ Кi определяемый на каждом шаге итерации, есть результат выбора конкретных битов из 56-битовой последовательности Сi ,Di и их перестановки. То есть ключ Ki =H(Ci ,Di ), где функция Н определяется матрицей, завершающей обработку ключа (таблица 8)


Таблица 8

Матрица H завершающей обработки ключа

14 17 11 24 01 05

03 28 15 06 21 10

23 19 12 04 26 08

16 07 27 20 13 02

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

Как следует из табл.8, первым битом ключа Ki будет 14-й бит последовательности Сi ,Di , а вторым- 17-й бит, 47-м битом ключа Ki будет 29-й битСi ,Di ,а 48-м битом -32-ой бит Сi ,Di .

2. Основные режимы работы алгоритма DES

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

Чтобы воспользоваться алгоритмом DESдля решения разнообразных криптографических задач, разработаны четыре рабочих режима:

-электронная кодовая книга ЕСВ (electroniccodebook);

-сцепление блоков шифра СВС (cipherblockchaining);

-обратная связь по шифртексту CFB(cipherfeedback);

-обратная связь по выходу OFB(outputfeedback).

В курсовой работе мы реализовывали режим «электронная кодовая книга». Изучив теорию, можем приступить к практическому рассмотрению алгоритма. Была разработана программа, наглядно показывающая работу алгоритма DES.

3. Разработка программной реализации алгоритма

В данном разделе курсового проекта приводится описание программного продукта, реализующего алгоритм шифрования DES: показывается логика работы программы, описываются процедуры и функции.

Программа “ResearchDES” написана на языке программирования высокого уровня C++; при разработке использовалась среда BorlandC++ Builder. Исходный текст программы приведен в приложении 1.

Программа представляет собой приложение для операционной системы Windows, которое выполняется следующим образом: пользователь выбирает файл, который содержит необходимое для шифрования сообщение. Получив имя файла, программа открывает его, производит необходимые действия над данными, и записывает полученный результат в нужный пользователю файл.

Предлагаемый программный продукт содержит следующие компоненты:

а) Основной файл mainform.cpp.

б) Алгоритм преобразования исходного сообщения.

в) Алгоритм преобразования входных данных.

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


Заключение

В процессе разработки курсового проекта были получены навыки работы и программирования приложений на языке C++ в среде BorlandC++ Builder. В результате работы над проектом получена работоспособная программа, реализующая шифрование по алгоритму DESв режиме «электронная кодовая книга». Данный продукт может использоваться как учебное пособие, или для домашнего пользования. Симметричные алгоритмы шифрования еще долго будут актуальны.

Список использованных источников

1. Ю.В.Романец, П.А. Тимофеев, В.Ф. Шаньгин Защита информации в компьютерных системах и сетях: Радио и связь: Москва, 1999. - 328 с.

2 Брюс Шнайер, Прикладная криптография: БХВ-Питер: Санкт-Петербург,2004.-718 с.

Приложение А

Листинг программы А.1 –mainform.cpp

#include <vcl.h>

#pragma hdrstop

#include "DESAlgorithms.h"

#include "MainForm.h"

#pragma package(smart_init)

#pragma link "SHDocVw_OCX"

#pragma link "DataFrame"

#pragma resource "*.dfm"

TMainDialogForm *MainDialogForm;

__fastcall TMainDialogForm::TMainDialogForm(TComponent* Owner)

: TForm(Owner)

{

KeysDataFrame->EditLeft = 80;

KeysDataFrame->AddField("Ключ", false);

SrcDataFrame->EditLeft = 100;

SrcDataFrame->AddField("Входнаястрока", false);

SrcDataFrame->AddField("Результат", true);

}

void __fastcall TMainDialogForm::BrowseInpFilePathButtonClick(TObject *Sender)

{

if (OpenDialog->Execute()) InpFilePathEdit->Text = OpenDialog->FileName;

}

void __fastcall TMainDialogForm::BrowsOutFilePathButtonClick(

TObject *Sender)

{

if (SaveDialog->Execute()) OutFilePathEdit->Text = SaveDialog->FileName;

}

void __fastcall TMainDialogForm::AutoStartButtonClick(TObject *Sender)

{

DESAlg.Key = KeysDataFrame->Field["Ключ"];

if ( IsCryptRadioButton->Checked ) DESAlg.Crypt = true;

else DESAlg.Crypt = false;

if (SourcePageControl->ActivePage == StringSrcSheet) {

//Входные данные берем из строки "Входная строка"

DESAlg.Data = SrcDataFrame-> Field["Входная строка"];

}

else if (SourcePageControl->ActivePage == FileSrcSheet) {

//Входные данные берем из файла, путь к которому находится в

//InpFilePathEdit

DESAlg.Data = ReadAnsiStringFromFile( InpFilePathEdit->Text );

}

DESAlg.Exectute();

if (SourcePageControl->ActivePage == StringSrcSheet) {

SrcDataFrame->Field["Результат"] = DESAlg.Data;

}

else if (SourcePageControl->ActivePage == FileSrcSheet) {

//Выходные данные записываем в файл, путь к которому находится в

//OutFilePathEdit

if (WriteAnsiStringToFile( DESAlg.Data, OutFilePathEdit->Text )) {

MessageBox(this->Handle,

((AnsiString)"Данныеуспешнозаписанывфайл\n" +

OutFilePathEdit->Text).c_str(), this->Caption.c_str(),

MB_ICONINFORMATION | MB_OK );

}

}

}

//ЧтениефайлавAnsiString

AnsiString __fastcall TMainDialogForm::ReadAnsiStringFromFile(

AnsiString FileName)

{

AnsiString Result;

try {

TFileStream *in = new TFileStream(FileName, fmOpenRead); //открываемфайл

if( in != NULL ) {

int size = in->Size;

if( size != 0 ) {

try {

Result.SetLength(size);

in->Read((void *)(Result.data()), size);

}

catch( EOutOfMemory& ) {}

delete in;

}

}

}

catch ( EStreamError& ) {

MessageBox(this->Handle, ( (AnsiString)

"Не удается прочитать данные из файла:\n" + FileName).c_str(),

"Ошибка чтения файла", MB_ICONERROR| MB_OK);

return "";

}

return Result;

}

//ЗаписьвфайлизAnsiString

bool __fastcall TMainDialogForm::WriteAnsiStringToFile(AnsiString String,

AnsiString FileName)

{

try {

TFileStream *out = new TFileStream(FileName, fmCreate); // открываемфайл

if( out != NULL ) {

if( String.Length() != 0 ) {

try {

out->Write((void *)(String.data()), String.Length());

}

catch( EOutOfMemory& ) {}

delete out;

}

}

}

catch (EStreamError&) {

MessageBox(this->Handle, ((AnsiString)

"Неудаетсязаписатьданныевфайл:\n" + FileName).c_str(),

"Ошибказаписифайла",

MB_ICONERROR | MB_OK );

return false;

}

return true;

}

ЛистингпрограммыА.2 –des.cpp

#include <vcl.h>

#pragma hdrstop

#include "DES.h"

#pragmapackage(smart_init)

//Извлечение бита из массива символов

int get_bit (unsigned char *data, int num)

{

return (int)((data[num/8] & (1 << (7 - (num % 8)))) != 0);

}

//Установкабитавмассивесимволов

void set_bit (unsigned char *data, int num, int bit)

{

if(bit== 1)//Нужно бит установить в 1

data[num/8] |= 1 << (7 - (num% 8));

else//Нужно бит сбросить в 0

data[num/8] &= ~(1 << (7 - (num% 8)));

}

//Циклический сдвиг влево массива dataиз num_elemэлементов на num_shift

//позиций

void shift_left (unsigned char *data, int num_elem, int num_shift)

{

int save_bit;

for (int k=0; k < num_shift; ++k)

{

save_bit = get_bit(data, 0);

for (int i=0; i < num_elem - 1; ++i)

{

data[i] <<= 1;

set_bit(&data[i], 7, get_bit(&data[i+1], 0));

}

data[num_elem-1] <<=1;

set_bit (&data[num_elem-1], 7, save_bit);

}

}

//Циклический сдвиг вправо массива dataиз num_elemэлементов на num_shift

//позиций

void shift_right (unsigned char *data, int num_elem, int num_shift)

{

int save_bit;

for (int k=0; k < num_shift; ++k)

{

save_bit = get_bit(&data[num_elem-1], 7);

for (int i=num_elem - 1; i >= 1 ; --i)

{

data[i] >>= 1;

set_bit(&data[i], 0, get_bit(&data[i-1], 7));

}

data[0] >>=1;

set_bit (&data[0], 0, save_bit);

}

}

//Циклический сдвиг влево массива dataиз 28 элементов (сдвиг ключа) на \

//num_shift позиций

void shift_left_key (unsigned char *key, int num_shift)

{

int save_bit;

for (int i=0; i<num_shift; ++i)

{

shift_left(key, 7, 1);

save_bit=get_bit(key, 27);

set_bit(key, 27, get_bit(key, 55));

set_bit(key, 55, save_bit);

}

}

//Циклический сдвиг влево массива dataиз 28 элементов (сдвиг ключа) на

//num_shift позиций

void shift_right_key (unsigned char *key, int num_shift)

{

int save_bit;

for (int i=0; i<num_shift; ++i)

{

shift_right(key, 7, 1);

save_bit=get_bit(key, 0);

set_bit(key, 0, get_bit(key, 28));

set_bit(key, 28, save_bit);

}

}

//Обменивает биты в соответсвии с таблицами перестановки

//data_src- входной массив данных. Если NULLтогда данные берутся из data_des

//data_des- входной/выходной массив данных.

//transposition_table - таблицаперестановки

//num - кол-воэлементов/ 8 вdata_des иэлементоввtransposition_table

void transposition (unsigned char *data_des, unsigned char *data_src,

int *transposition_table, int num)

{

bool delete_mem=false;

if (data_src==NULL)

{

data_src = new unsigned char[num / 8];

memcpy(data_src, data_des, num / 8);

delete_mem=true;

}

for (int i=0; i<num; ++i)

set_bit(data_des, i, get_bit(data_src, transposition_table[i] - 1));

if (delete_mem) delete [] data_src;

}

//Возвращает значение S-подстановки

int get_S_substitution (int inp, int *S_table)

{

int string=0;//Строкавтаблице

int column=0;//Столбецвтаблице

string = get_bit((unsigned char*)(&inp), 2) |

get_bit((unsigned char *)(&inp), 5) << 1 ;

column = get_bit((unsigned char*)(&inp), 3) |

get_bit((unsigned char *)(&inp), 4) << 1 |

get_bit((unsigned char *)(&inp), 5) << 2 |

get_bit((unsigned char *)(&inp), 6) << 3;

return S_table[string * 16 + column];

}

//РеализуеталгоритмподстановкиS-блоков

void S_block (unsigned char *dest, unsigned char *src)

{

intS_inp;//6 бит, подающиеся на вход в S-блок

intS_out;//4 бита, получаемые из S-блока

for (int i=0; i<4; ++i) dest[i]=0;

for (int i=0; i<8; ++i)

{

shift_left (src, 6, i);

S_inp=(src[0] >> 2) & 0x3F;

S_out=get_S_substitution(S_inp, table_S_block[i]);

dest[i/2] |= S_out << (((i + 1) % 2) * 4);

}

}

//Сам алгоритм DES. i_key- 64 бита (8 байт) (с битами четности); data- 64 бита

//Алгоритм используется как при шифровании, так и при дешифровании. Ключ при

//дешифровании менять самим. При decode==false- зашифровка, если ==true-

//расшифровка

void DES_algorithm (unsigned char *i_key, unsigned char *data,

bool decode=false)

{

unsigned char key[7]; //Ключбезбитовчетности

unsignedcharLi[4]; //сохраненная левая половина данных

unsignedcharsmall_key[6]; //ключ после перестановки со сжатием

unsignedcharbig_data[6]; //данные после перестановки с расширением

unsignedcharsmall_data[4]; //данные после подстановки с помощью

//S-блоков

//Перестановка ключа (+ избавление от 8х битов)

transposition (key, i_key, table_key_initial_transposition, 56);

//Первоначальная перестановка данных

transposition (data, NULL, table_initial_transposition, 64);

for(inti=0; i<16; ++i)

{

//Сохранение Li(берется из правой части)

memcpy(Li, &data[4], 4);

//Сдвигключа

if (!decode)

{

shift_left_key (key, table_shift_key[i]); //При зашифровке

}

else

{

shift_right_key (key, table_shift_key_right[i]); //При расшифровке

}

//Перестановка ключа со сжатием

transposition (small_key, key,

table_transposition_with_compression, 48);

//Перестановка данных с расширением

transposition(big_data, &data[4],

table_transposition_with_extension, 48);

//Сложение данных XOR с ключом

for (int k=0; k<6; ++k)big_data[k]^=small_key[k];

//ПодстановкаспомощьюS-блоков

S_block (small_data, big_data);

//Перестановка данных с помощью P-блоков

transposition (small_data, NULL, table_transposition_P_block, 32);

//Сложение XORданных левой и правой частей

for (int k=0; k<4; ++k) small_data[k] ^= data[k];

//Запись в dataполученных результатов

memcpy(&data[0], Li, 4);

memcpy(&data[4], small_data, 4);

}

//Заключительный обмен полученных результатов

memcpy(Li, &data[0], 4);

memcpy(&data[0], &data[4], 4);

memcpy(&data[4], Li, 4);

//Заключительная перестановка

transposition (data, NULL, table_final_transposition, 64);

}

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Где скачать еще рефератов? Здесь: letsdoit777.blogspot.com
Евгений07:38:00 19 марта 2016
Кто еще хочет зарабатывать от 9000 рублей в день "Чистых Денег"? Узнайте как: business1777.blogspot.com ! Cпециально для студентов!
09:46:04 29 ноября 2015

Работы, похожие на Курсовая работа: Программная реализация алгоритма шифрования DES. Режим ECB
Защита информации в системах дистанционного обучения с монопольным ...
АННОТАЦИЯ Данная диссертация посвящена вопросам построения систем защиты информации для программных пакетов, используемых в монопольном доступе. В ...
Алгоритмы шифрования с открытым ключом получили широкое распространение в современных информационных системах.
- int GetValue(const int *&p, int &variables, int ®isters, const int &data)
Раздел: Рефераты по информатике, программированию
Тип: реферат Просмотров: 1381 Комментариев: 2 Похожие работы
Оценило: 0 человек Средний балл: 0 Оценка: неизвестно     Скачать
Композиции шифров
МПС РФ Московский Государственный Университет Путей Сообщения (МИИТ) Кафедра "Электроника и защита информации" Курсовая работа по дисциплине ...
Двухраундовый алгоритм DES слишком ненадежен, чтобы все биты результата зависели от всех битов ключа и всех битов исходных данных.
В отличие от алгоритма DES, имеющего фиксированный (хотя и оптимизированный с точки зрения стойкости) набор таблиц подстановок и перестановок, в REDOC II используются зависимые от ...
Раздел: Рефераты по информатике, программированию
Тип: реферат Просмотров: 1807 Комментариев: 3 Похожие работы
Оценило: 1 человек Средний балл: 2 Оценка: неизвестно     Скачать
Система управления базой данных объектов гражданской обороны для ...
Государственный Комитет Российской Федерации по высшему образованию Московский Государственный Институт Радиотехники, Электроники и Автоматики ...
Foreign Key (вторичный ключ)
Безопасность: аутентификация с помощью открытых ключей метода шифрования RSA; сертифицирована по уровню C2
Раздел: Рефераты для военной кафедры
Тип: реферат Просмотров: 2033 Комментариев: 2 Похожие работы
Оценило: 0 человек Средний балл: 0 Оценка: неизвестно     Скачать
Система криптозащиты в стандарте DES. Система взаимодействия ...
Рис.6.3. Подпрограмма обработки прерываний от INT1(низкий приоритет) Ввод байта ключа Через Р0 по @R1 Сохранание PSW Сохранение Аккумулятора Установка ...
Алгоритм засекречивания данных разработан для шифрования и дешифрования блоков данных, состоящих из 64 бит, при воздействии на них ключа, также 64 бита.
Принято, что KS (n,KEY) есть фунеция, которая определяется целым числом n, которое изменяется от 1 до 16 (nномер повторителя) ключом (KEY) из 64 бит.
Раздел: Рефераты по информатике, программированию
Тип: реферат Просмотров: 556 Комментариев: 2 Похожие работы
Оценило: 0 человек Средний балл: 0 Оценка: неизвестно     Скачать
Основы C
Кафедра: Автоматика и Информационные Технологии ОСНОВЫ С ОГЛАВЛЕНИЕ Введение Глава 1. Основы языка Си 1.1. Алфавит 1.2. Основные конструкции Си 1.3 ...
- собственно сортирующий алгоритм, который осуществляет сравнение и перестановку элементов до тех пор, пока все элементы множества не будут упорядочены.
ch = (char)((int)ch + 1);
Раздел: Рефераты по информатике, программированию
Тип: учебное пособие Просмотров: 1160 Комментариев: 2 Похожие работы
Оценило: 1 человек Средний балл: 5 Оценка: неизвестно     Скачать
Интегральная атака против блочного симметричного шифра Crypton
ВВЕДЕНИЕ Стремительное развитие современных информационных технологий в Украине, начавшееся в конце XX века, не снижает своих темпов и в начале XXI ...
Алгоритм нахождения требует около шести шифрований DES, чтобы найти набор из 256 эквивалентных ключей для DEAL-192, и восемь шифрований DES, чтобы найти 256 эквивалентных ключей ...
Циклическое преобразование в CRYPTON состоит из четырех шагов: byte-wise substitutions(байт замена), column-wise bit permutation(колончастый способ перестановки битов), column-to ...
Раздел: Рефераты по информатике, программированию
Тип: дипломная работа Просмотров: 3049 Комментариев: 2 Похожие работы
Оценило: 1 человек Средний балл: 5 Оценка: неизвестно     Скачать
Технический словарь
A.........................................................................................2 B ...
bit
ключ шифрования
Раздел: Топики по английскому языку
Тип: топик Просмотров: 919 Комментариев: 2 Похожие работы
Оценило: 1 человек Средний балл: 2 Оценка: неизвестно     Скачать
Защита информации виртуальных частных сетей
Содержание Введение 1 Основы безопасности ВЧС 1.1 Пользовательские процессоры 1.2 Заказные и принудительные туннели 1.2.1 Заказное туннелирование 1.2 ...
Применяемые при шифровании алгоритмы, особенно с ключами длиной более 128 бит, практически полностью исключают возможность дешифрования информации посторонними.
Стандарт шифрования данных (Data Encryption Standard - DES) - Цепочка цифровых блоков (CBC) представляет алгоритм секретного ключа, служащий для обеспечения конфиденциальности.
Раздел: Рефераты по информатике, программированию
Тип: дипломная работа Просмотров: 1861 Комментариев: 2 Похожие работы
Оценило: 0 человек Средний балл: 0 Оценка: неизвестно     Скачать
Средства безопасности Windows Server 2003
Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования Дальневосточный государственный ...
Стандарт шифрования данных (Data Encryption Standard, DES) - формирование цепочки шифрованных блоков (Cipher Block Chaining, CBC) - алгоритм шифрования с закрытым ключом ...
Данные зашифровываются с помощью симметричного алгоритма с применением Ключа шифрования фаша (File Encryption Key, FEK).
Раздел: Рефераты по информатике, программированию
Тип: реферат Просмотров: 2571 Комментариев: 2 Похожие работы
Оценило: 1 человек Средний балл: 4 Оценка: неизвестно     Скачать
Баричев С. Криптография без секретов
Баричев С. Криптография без секретов 42 От автора Эта книга - краткое введение в криптографию. С одной стороны, здесь изложен материал, который ...
Преобразование Tk определяется соответствующим алгоритмом и значением параметра k. Эффективность шифрования с целью защиты информации зависит от сохранения тайны ключа и ...
Первым среди подобных стандартов стал американский DES, представляющий собой последовательное использование замен и перестановок.
Раздел: Рефераты по информатике, программированию
Тип: реферат Просмотров: 526 Комментариев: 6 Похожие работы
Оценило: 0 человек Средний балл: 0 Оценка: неизвестно     Скачать

Все работы, похожие на Курсовая работа: Программная реализация алгоритма шифрования DES. Режим ECB (1392)

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

Да, в любом случае.
Да, но только в случае крайней необходимости.
Возможно, в зависимости от цены.
Нет, напишу его сам.
Нет, забью.



Результаты(149913)
Комментарии (1829)
Copyright © 2005-2016 BestReferat.ru bestreferat@mail.ru       реклама на сайте

Рейтинг@Mail.ru