Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Звіт
про виконання лабораторної роботи №1
з курсу “Методи та засоби криптологічних перетворень ”
на тему: “Шифр з автоключем ”
Мета роботи: навчитися зашифровувати і зашифровувати текст лінійним шифром 4-го порядку.
Завдання: написати програму що реалізує лінійний шифр 4-го порядку.
Короткі теоретичні відомості
Текст програми для шифрування тексту
#include<stdio.h>
#define n 4
int A_asciicode[33] = { 224,225,226,227,180,228,229,186,230,231,232,
179,191,233,234,235,236,237,238,239,240,241,
242,243,244,245,246,247,248,249,252,254,255 };
int matrix[4][4] = { 1, 2, 1, 2,
2, 3, 4, 2,
3, 1, 1, 3,
1, 2, 2, 4 } ;
int main()
{
FILE *IN, *OUT;
int ch,k;
int text[n][n],new[n][n];
int i=0,j=0,q,s,z;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
text[i][j]=-1;
}
IN=fopen("C:\\str\\d1.txt","r");
OUT=fopen("C:\\str\\d2.txt","w+");
i=0;
j=0;
while(1)
{
ch=fgetc(IN);
if(feof(IN)) break;
if((ch>190&&ch<218)||(ch==252)||(ch>221&&ch<250)||(ch==165)||(ch==180)||
(ch==170)||(ch==186)||(ch==175)||(ch==178)||(ch==179)||(ch==254)||(ch==255))
{
if(ch==165) ch=180;
if(ch==170) ch=186;
if(ch==178) ch=179;
if(ch==175) ch=191;
if(ch>191&&ch<223) ch+=32;
k=0;
while(ch!=A_asciicode[k])
k++;
if(i>3)
{
j++;
i=0;
}
text[i++][j]=k;
}
}
for(z=0;z<n;z++)
for(i=0;i<n;i++)
{
s=0;
for(j=0;j<n;j++)
{
q=matrix[i][j]*text[j][z];
s+=q;
}
new[i][z]=s;
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
fprintf(OUT, "%c", A_asciicode[new[j][i]%33]);
return 0;
}
Текст програми для розшифрування тексту
#include<stdio.h>
#define n 4
int A_asciicode[33] = { 224,225,226,227,180,228,229,186,230,231,232,
179,191,233,234,235,236,237,238,239,240,241,
242,243,244,245,246,247,248,249,252,254,255 };
int matrix[4][4] = { 32, 32, 27, 22,
18, 17, 3, 5,
27, 28, 1, 13,
19, 19, 16, 27 } ;
int main()
{
FILE *IN, *OUT;
int text[n][n],new[n][n];
int i,j,z,s,ch,k,q;
IN=fopen("C:\\str\\d2.txt","r");
OUT=fopen("C:\\str\\vd.txt","w+");
i=0;
j=0;
while(1)
{
ch=fgetc(IN);
if(feof(IN)) break;
k=0;
while(ch!=A_asciicode[k])
k++;
if(i>3)
{
j++; i=0;
}
text[i++][j]=k;
}
for(z=0;z<n;z++)
for(i=0;i<n;i++)
{
s=0;
for(j=0;j<n;j++)
{
q=matrix[i][j]*text[j][z];
s+=q;
}
new[i][z]=s;
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
fprintf(OUT, "%c", A_asciicode[new[j][i]%33]);
return 0;
}
Текст: написати програму
РЕЗУЛЬТАТ 1
уюбщьоменіджмойї
РЕЗУЛЬТАТ 2
написатипрограму
Висновок: на лабораторній роботі я навчився зашифровувати і розшифровувати текст лінійним шифром 4-го порядку.