Шифрование данных. Алгоритм Blowfish

Автор: Пользователь скрыл имя, 15 Декабря 2010 в 01:27, курсовая работа

Краткое описание

Предмет исследования – криптографический алгоритм Blowfish. Цель работы – разработка программного продукта обеспечивающего шифрование/расшифрование данных по алгоритму Blowfish. Алгоритм Blowfish — блочный шифр, основанный на сети Файстеля. Алгоритм прост в реализации, он является стойким ко всем, известнымна сегодняшний день, методам криптоанализа.

Оглавление

Введение 4
1 Понятие шифрования данных 7
2 Описание алгоритма blowfish 11
2.1 Структура алгоритма 11
2.2 Процедура расширения ключа 13
2.3 Достоинства и недостатки алгоритма 14
3 Практическая реализация алгоритма blowfish 16
4 Описани работы с программным продуктом 21
4.1 Минимальные требования для работы программного продукта 21
4.2 Шифрование данных 21
4.3 Расшифрование данных 23
4.4 Генерация пароля 25
Заключение 26
Список использованных источников 27
Приложение 1. Содержимое заголовочного файла 28
Приложение 2. Содержимое основного файла 29

Файлы: 1 файл

Курсовая работа.docx

— 690.11 Кб (Скачать)

Рисунок 4. – Диалоговое окно выбора файла  для шифрования

  1. Указать путь, по которому будет сохранен зашифрованный файл. Путь можно прописать самому или использовать диалоговое окно. Для того, что бы вызвать диалоговое окно необходимо нажать на кнопку «Изменить путь» (см. рис. 5);

Рисунок 5. – Главное окно программы

  1. Произвести ввод пароль и повторить правильность его ввода;
  2. Нажать на кнопку «Выполнить» (см. рис. 6);

Рисунок 6. – Главное окно программы

     Примечание: в программе предусмотрена функция удаление исходного файла после шифрования, для этого нужно установить флаг у свойства «Удаление исходного файла».

    1. Расшифрование данных
 

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

  1. Из предложенных действий выбрать «Расшифровать»;
  2. Необходимо выбрать файл, который Вы хотите расшифровать. Для этого нажмите на кнопку «Выбрать файл» (см. рис. 7);

Рисунок 7. – Главное окно программы

  1. После этого появится диалоговое окно, в котором Вы выбираете файл для расшифрования (см. рис. 8);

Рисунок 8. – Диалоговое окно выбора файла для расшифрования

  1. Указать путь, по которому будет сохранен зашифрованный файл. Путь можно прописать самому или использовать диалоговое окно. Для того, что бы вызвать диалоговое окно необходимо нажать на кнопку «Изменить путь» (см. рис. 9);

Рисунок 9. – Главное окно программы

  1. Произвести ввод пароля и повторить правильность его ввода;
  2. Нажать на кнопку «Выполнить» (см. рис. 10);

Рисунок 10. – Главное окно программы

     Примечание: в программе предусмотрена функция удаление исходного файла после расшифрования, для этого нужно установить флаг у свойства «Удаление исходного файла».

    4.4 Генерация пароля

            

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

  1. Укажите, какой длины должен быть сгенерированный пароль;

Рисунок 11. – Главное окно программы

  1. Нажмите на кнопку «Сгенерировать пароль». В результате в поле, для ввода пароля появятся сгенерированный пароль. 

    ЗАКЛЮЧЕНИЕ

 

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

     В рамках курсовой работы была дана краткая  характеристика двух основных методов  шифрования: симметричное шифрование и ассиметричное. А также был  подробно рассмотрен алгоритм блочного симметричного шифрования Blowfish, основанного на сети Файстеля. Данный алгоритм обеспечивает высокий уровень защиты, поскольку он является устойчивым ко всем видам криптоанализа, известных на сегодняшний день

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

 

    СПИСОК  ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 
  1. Алгоритмы симметричного шифрования [Электронный ресурс]. – Режим доступа: http://big-bro.info/algoritmy-simmetrichnogo-shifrovaniya/
  2. Алгоритмы шифрования [Электронный ресурс]. – Режим доступа: http://shifrovanie.narod.ru/articles/5n96y3a.htm
  3. Алгоритм Blowfish [Электронный ресурс]. – Режим доступа: http://all4web.ru/art.aspx?id=25
  4. Алгоритм Blowfish [Электронный ресурс]. – Режим доступа: http://www.javable.com/columns/crypto/algorythms/01/#%3F%3F%3F%3F%3F%3F%3F%3F
  5. Гладких А.А. Базовые  принципы  информационной  безопасности  вычислительных сетей:  учебное пособие для студентов /  А.А. Гладких, В.Е. Дементьев; – Ульяновск : УлГТУ, 2009. – 168 с. 
  6. Грибунин В. Г. Цифровая стеганография: учебное пособие / В.Г. Грибунин, И. Н. Оков, И. В. Туринцев. – М.: Солон-Пресс, 2002. – 272 с.
  7. Интересные алгоритмы шифрования [Электронный ресурс]. – Режим доступа: http://www.bytemag.ru/articles/detail.php?ID=9090
  8. Криптография [Электронный ресурс]. – Режим доступа: http://cryptolog.ru/
  9. Романец Ю. В. Защита информации в компьютерных системах и сетях / Ю. В. Романец, П. А. Тимофеев, В. Ф. Шаньгин; – М.: Радио и связь, 2001. – 376 с.
  10. Шифрование данных [Электронный ресурс]. – Режим доступа: http://digest.subscribe.ru/inet/protection/n94412309.html
  11.  

    ПРИЛОЖЕНИЕ 1. СОДЕРЖИМОЕ ЗАГОЛОВОЧНОГО  ФАЙЛА

 

     #include <iostream>

     #include <algorithm>

     using namespace std; 

     const unsigned int mask=0xFFFFFFFF;

     class TBlowfish{

     private:

           unsigned int S1[256];

           unsigned int S2[256];

           unsigned int S3[256];

           unsigned int S4[256];

           unsigned int key[18];

           unsigned int F(unsigned int);

           void final(unsigned int*, int);

     public:

           unsigned long long Encrypt(unsigned long long);

           unsigned long long Decrypt(unsigned long long);

           void initialization(unsigned int*);

           TBlowfish();

           ~TBlowfish();

     }

 

    ПРИЛОЖЕНИЕ 2. СОДЕРЖИМОЕ ОСНОВНОГО  ФАЙЛА

 

#include "Blowfish.h"; 

unsigned int K1[]={

     0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,

     0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99,

     0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,

     0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,

     0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,

     0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,

     0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,

     0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e,

     0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,

     0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,

     0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce,

     0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,

     0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,

     0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677,

     0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,

     0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,

     0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88,

     0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,

     0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,

     0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,

     0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,

     0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,

     0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88,

     0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,

     0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,

     0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d,

     0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,

     0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,

     0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba,

     0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,

     0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,

     0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09,

     0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,

     0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,

     0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,

     0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,

     0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,

     0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82,

     0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,

     0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,

     0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0,

     0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,

     0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,

     0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8,

     0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,

     0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,

     0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7,

     0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,

     0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,

     0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,

     0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,

     0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,

     0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477,

     0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,

     0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,

     0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af,

     0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,

     0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,

     0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41,

     0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,

     0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,

     0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915,

     0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,

     0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a};

 

unsigned int  K2[] = {

     0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,

     0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,

     0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,

     0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e,

     0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,

     0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,

     0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e,

     0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,

     0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,

     0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8,

     0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,

     0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,

     0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701,

     0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,

Информация о работе Шифрование данных. Алгоритм Blowfish