на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Программная реализация криптографического алгоритма шифрования с использованием открытого текста в качестве ключа
p align="center"> 2. Разработка программы, выполняющей шифрование и расшифрование по таблице Виженера

Текст программы шифрования и расшифрования приведен в приложении Г.

Данная программа написана с использованием языка программирования С.

В главной функции объявляется таблица Виженера при помощи двумерного массива alfavit[27][27].

В этой функции осуществляется вызов функции шифрования.

Для вывода сообщений на экран используются функции printf() и puts(). А для ввода данных используются функции scanf() и cin().

Для организации циклов в этих функциях используются операторы с предусловием while и с параметрическим циклом for.

3. Экспериментальная проверка работы программы

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

После шифрования был получен следующий шифротекст:«wapnqaq»

Для проверки работы программы расшифрования по таблице Виженера возьмём этот же шифротекст «wapnqaq» при этом ключевым символом должен являться символ «a». При расшифровки получим первоначальный текст «welcome».

Заключение

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

Также была выполнена экспериментальная проверка работы данной программы, подтверждающая правильность шифрования.

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

Таким образом, задание на курсовую работу выполнено в полном объеме.

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

1. Керниган Б., Ритчи Д. Язык программирования Си.\Пер. с англ., 3-е изд., испр - СПб.: «Невский Диалект», 2001. - 352с.:ил.

2. Алферов А.П., Зубов А.Ю., Кузьмин А.С., Черемушкин А.В. Основы криптографии: Учебное пособие. - М.: Гелиос АРВ, 2001. - 480 с.

3. Основы криптологии. Шифры замены. Методические указания к практическим занятиям по дисциплине «Основы криптологии». / Составители М.М. Грунтович, С.М. Геращенко - Пенза: Пензен. госуд. ун_т, 2005.

4. Информатика: Базовый курс \ С.В. Симонович и др. - СПб,: Питер,2001. - 640 с.

ПРИЛОЖЕНИЕ А

Алгоритм программы шифрования и расшифрования

ПРИЛОЖЕНИЕ Б

Алгоритм функции шифрования

ПРИЛОЖЕНИЕ В

Алгоритм функции расшифрования

ПРИЛОЖЕНИЕ Г

Листинг программы шифрования и расшифрования

#include <stdio.h>

#include <string.h>

#include <iostream.h>

#include <stdlib.h>

void main()

{int b;

int f;

int z2;

int z1;

int y;

int y1;

char x1[20]={0};

char x2;

char x3[20]={0};

char x5[20]={0};

char filename[40];

FILE*text;

int r=0;

char c;

int i;

int i1;

int j;

int j1;

char t1[20]={0};

char t2;

char t5[20];

static char alfavit[27][27]={

{' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'},

{'a','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'},

{'b','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a'},

{'c','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b'},

{'d','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c'},

{'e','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d'},

{'f','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e'},

{'g','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f'},

{'h','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g'},

{'i','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h'},

{'j','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i'},

{'k','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j'},

{'l','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k'},

{'m','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l'},

{'n','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m'},

{'o','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n'},

{'p','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o'},

{'q','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'},

{'r','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q'},

{'s','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r'},

{'t','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s'},

{'u','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t'},

{'v','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u'},

{'w','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v'},

{'x','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w'},

{'y','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x'},

{'z','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y'},};

while (1)

{printf("\nVvedite 1 dlya shifrovaniya \nVvedite 2 dlya rasshifrovaniya\nVvedite 3 dlya vihoda\n");

scanf("%d",&b);

switch (b)

{case 1: printf("%d - shifrovaniye\n",b);

printf("\nVibor regima:\n1 from klava\n2 from file\n");

scanf("%d",&f);

switch(f)

{case 1: printf("Vvedite slovo\n");

cin>>x1;

printf("\nVvedite kluchevoy simvol\n");

cin>>x2;

for ( z2=strlen(x1)-1;z2>0;z2--)

{x3[z2]=x1[z2-1];}

x3[0]=x2;

x3[strlen(x1)]='\0';

printf("\nSlovo dlya shifrovaniya: %s\n",x1);

printf("\nKluchevoy simvol: %c\n",x2);

printf("\nKluchevaiya posledovatel'nost': %s\n",x3);

int z3;

for (z3=0;z3<20;z3++)

{z1 = y1 = 0;

if((x1[z3] !='\0')||(x3[z3] !='\0'))

{for (z2=0;z2<27;z2++)

if (alfavit[0][z2]==x1[z3])

{z1=z2;

break;}

for (y=0;y<27;y++)

if (alfavit[y][0]==x3[z3])

{y1=y;

break;}

x5[z3]=alfavit[y1][z1];}

else

break;}

x5[z3] = '\0';

printf("\nShifrotekst: %s\n",x5);

break;

case 2: puts("Put name of file with open text:\n");

scanf("%s",&filename);

text=fopen(filename,"r");

while(!(feof(text)))

{c=getc(text);

r++;}

fseek(text,0,0);

i=0;

while(r!=1)

{c=getc(text);

x1[i]=c;

r--;

i++;}

printf("\nVvedite kluchevoy simvol\n");

cin>>x2;

for ( z2=strlen(x1)-1;z2>0;z2--)

{x3[z2]=x1[z2-1];}

x3[0]=x2;

x3[strlen(x1)]='\0';

printf("\nSlovo dlya shifrovaniya: %s\n",x1);

printf("\nKluchevoy simvol: %c\n",x2);

printf("\nKluchevaiya posledovatel'nost': %s\n",x3);

for (z3=0;z3<20;z3++)

{z1 = y1 = 0;

if((x1[z3] !='\0')||(x3[z3] !='\0'))

{for (z2=0;z2<27;z2++)

if (alfavit[0][z2]==x1[z3])

{z1=z2;

break;}

for (y=0;y<27;y++)

if (alfavit[y][0]==x3[z3])

{y1=y;

break;}

x5[z3]=alfavit[y1][z1];}

else

break;}

x5[z3] = '\0';

printf("\nShifrotekst: %s\n",x5);

fclose(text);

break;

default: return;}

break;

case 2: printf("%d - rasshifrovaniye\n",b);

printf("\nVibor regima:\n1 from klava\n2 from file\n");

scanf("%d",&f);

switch(f)

{case 1: printf("\nVvedite shifrotekst:\n");

cin>>t1;

printf("\nVvedite kluchevoy simvol:\n");

cin>>t2;

printf("\nShifrotekst: %s\n",t1);

printf("\nKluchevoy simvol: %c\n", t2);

int i2;

for (i2=0;t1[i2];i2++)

{i1 = j1 = 0;

{for (i=0;i<32;i++)

if (alfavit[i][0]==t2)

{i1=i;

break;}

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

if (alfavit[i1][j]==t1[i2])

{j1=j;

break;}

t5[i2]=alfavit[0][j1];}

t2=t5[i2];}

t5[i2] = '\0';

printf("\nOtkritiy tekst: %s\n",t5);

break;

case 2: puts("Put name of file with open text:\n");

scanf("%s",&filename);

text=fopen(filename,"r");

while(!(feof(text)))

{c=getc(text);

r++;}

fseek(text,0,0);

i=0;

while(r!=1)

{c=getc(text);

t1[i]=c;

r--;

i++;}

printf("\nVvedite kluchevoy simvol:\n");

cin>>t2;

printf("\nShifrotekst: %s\n",t1);

printf("\nKluchevoy simvol: %c\n", t2);

for (i2=0;t1[i2];i2++)

{i1 = j1 = 0;

{for (i=0;i<32;i++)

if (alfavit[i][0]==t2)

{i1=i;

break;}

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

if (alfavit[i1][j]==t1[i2])

{j1=j;

break;}

t5[i2]=alfavit[0][j1];}

t2=t5[i2];}

t5[i2] = '\0';

printf("\nOtkritiy tekst: %s\n",t5);

fclose(text);}

break;

case 3: return;

default: printf("%d - tolko 1 ili 2!!!\n",b);

return;}}}

Страницы: 1, 2



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.