Шифрование данных. Алгоритм 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 Кб (Скачать)

            block_l=temp;

      }

      block_p=block_p^key[0];

      block_l=block_l^key[1];

      temp=block_p;

      block_p=block_l;

      block_l=temp;

      unsigned long long result=block_l;

      result=(result << 32) | block_p;

      return result;

}

unsigned int TBlowfish::F(unsigned int sub_block){

      short x1=0,x2=0,x3=0,x4=0;

      x1=sub_block & 0xFF; x2=(sub_block >> 8) & 0xFF;

      x3=(sub_block >> 16) & 0xFF; x4=(sub_block >> 24) & 0xFF;

      unsigned int y1=0,y2=0,y3=0,y4=0,temp=0;

      y1=S1[x1];

      y2=S2[x2];

      y3=S3[x3];

      y4=S4[x4];

      temp=(y1+y2)% mask;

      temp^=y3;

      temp=(temp+y4) % mask;

      return temp;

}

void TBlowfish::final(unsigned int* mass, int len){

      unsigned long long bl=0x0;

      for (int i=0; i<len;i+=2){ 

                  bl=Encrypt(bl);

                  mass[i]=bl & mask;

                  mass[i+1]=(bl >> 32) & mask;

      }

}

void TBlowfish::initialization(unsigned int* kluch){

      int j=0;

      for (int i=0;i<18;i++){

            if (j>=8) j%=8;

            key[i]=key[i]^kluch[j];

      }

      final(key,18);

      final(S1,256);

      final(S2,256);

      final(S3,256);

      final(S4,256);

}

TBlowfish::TBlowfish(){

      copy(K1, K1+256, S1);

      copy(K2, K2+256, S2);

      copy(K3, K3+256, S3);

      copy(K4, K4+256, S4);

      copy(keys, keys+18, key);

}

TBlowfish::~TBlowfish(){}

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