МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра «Захист інформації»
/
Курсовий проект
Завдання №1
Номер залікової книжки 0609086
I mod 6=6 mod 6 =0
Зсув 1-го порядку
N1=2(5+8)=213
Шифр зсуву
Ключ : S таке, що 0≤S<n
Шифрування : У повідомленні кожна буква х заміщується буквою
E(x)=(x+S) mod n
Дешифрування : У крипто тексті кожна буква х’ заміщується буквою D(x’)=(x’+s’)mod n де S’=n-s. величину зворотного зсуву S’ будемо називати дешифруючим ключем .
Вибір ключа : ключ вибираєм в межах 0≤S<213
Тому S=000,000,110,0111
Програма шифрування
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
const size_t small_buff = 20;
const size_t big_buff = 102400;
void main() {
clrscr();
char text[small_buff];
char bigtext[big_buff];
FILE *infile = fopen( "f:\\result.txt", "r" );
size_t read_len = 0;
size_t file_len = 0;
while( read_len = fread(text, 1, small_buff, infile ) )
{
memcpy( bigtext + file_len, text, read_len );
file_len += read_len;
}
int j,n,j1,zyb,i,n1,kl;int klych[]={1,1,1,0,0,1,1,0,0,0,0,0,0};
char zyb1;
k1=ff(klych);
for(j=0;j<=file_len;j++)
{ zyb1=bigtext[j];
Bigtext[j]=ff1(zyb1,kl); }
FILE *outfile = fopen( "f:\\result1.txt", "w" );
fwrite( bigtext, 1, file_len, outfile );
fclose( infile );
fclose( outfile );
}
Int ff(int b[]);
{ int k[13];int I,j;
for(i=0;i<13;i++)
{k[i]=0;}
For(i=0;i<13;i++)
{{if (1==b[i])
k[i]=pow(2,j);
else k[i]=0; }
a=a+k[i]; }
return a; }
char ff1(char zyb;int k)
{ int I,j; char zybb;
Zybb(zyb+k)%pow(2,13);
Return zybb; }
Завдання2
А)зашифрувати слово відкритого тексту за алгоритмом RSA
I=6 j=8
P=7 q=17
N=p*q=119
F(n)=n-p-q+1=96
E=11
НСД(96б11)=1;
Ed=1(mod(f(n)))
Відкриті ключі 11;119
Таємний ключ =d
Ed=1mod96=1mod96
D=35
‘Ф’=24 ; ‘О ‘=18 ; ‘ Н’=17
Програма шифрування
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
const size_t small_buff = 20;
const size_t big_buff = 102400;
void main() {
clrscr();
char text[small_buff];
char bigtext[big_buff];
FILE *infile = fopen( "f:\\result.txt", "r" );
size_t read_len = 0;
size_t file_len = 0;
while( read_len = fread(text, 1, small_buff, infile ) )
{
memcpy( bigtext + file_len, text, read_len );
file_len += read_len;
}
int j,n,I,l ;n=119;e=11;
char alfavit[]=”абвгдеєжзиіїйклмнопрстхшщьюя”;
char a1;
for(i=0;i<=file_len;i++)
{a1=bigtext[i];
For(j=0;j<=32;j++)
A1=j;}
Bigtext=pow(a1,e)%n;}
FILE *outfile = fopen( "f:\\result1.txt", "w" );
fwrite( bigtext, 1, file_len, outfile );
fclose( infile );
fclose( outfile );
}
Б)об’єм алфавіту 4]logNa[=16
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
const size_t small_buff = 20;
const size_t big_buff = 102400;
void main() {
clrscr();
char text[small_buff];
char bigtext[big_buff];
FILE *infile = fopen( "f:\\result.txt", "r" );
size_t read_len = 0;
size_t file_len = 0;
while( read_len = fread(text, 1, small_buff, infile ) )
{
memcpy( bigtext + file_len, text, read_len );
file_len += read_len;
}
int j,n,I,l ;
int k[16];int b[16];
for(i=15;i=>0;i--)
{{ if (k<0)
B[i]=0;
Else {b[i]=1;k=k-pow(2,i);}}
For(j=0;j<file_len;j++)
{for(i=15;i=>0;i--)
{k[i]=pow(pow(bigtext[j],2),2);
K[i+1]=pow(k[i],2);}
Bigtext[j]=k[i]%n;}
FILE *outfile = fopen( "f:\\result1.txt", "w" );
fwrite( bigtext, 1, file_len, outfile );
fclose( infile );
fclose( outfile );
}