МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Лабораторна робота № 4
з дисципліни “Криптографічні системи та протоколи”
на тему: “ RSA ”
Мета роботи: вивчитити алгоритм RSA.
1. Завдання.
Реалізувати програму, що дозволяє шифрувати інформацію з використанням RSA.
2. Фрагменти тексту програми.
кодування даних
…
void encoding(FILE *inputFile,FILE *outputFile, FILE *filePublicKey)
{ int count=-1; char ch; bool f=false; fread(&keys.n,sizeof(int),1,filePublicKey); fread(&keys.d,sizeof(int),1,filePublicKey);
fclose(filePublicKey); unsigned long int temp; long size; fseek(inputFile, 0, SEEK_END); size = ftell(inputFile);
fseek(inputFile, 0, SEEK_SET); fseek(inputFile,0,0); ch = fgetc(inputFile);
for(int i=0;i<size;i++)
{ for(int j=0;j<35;j++) { char ch_=A[j]; if(ch==ch_) { ch=j; f=true; break; } }
if(f) { temp=int(binPow(int(ch),keys.d))%keys.n; f=false; fwrite(&int(temp),sizeof(int),1,outputFile); }
ch = fgetc(inputFile); };
fwrite(&count,sizeof(int),1,outputFile); fclose(inputFile); fclose(outputFile);}
…
декодування даних
…
void decoding(FILE *inputFile,FILE *outputFile, FILE *filePrivateKey)
{ fread(&keys.n,sizeof(int),1,filePrivateKey); fread(&keys.e,sizeof(int),1,filePrivateKey); fclose(filePrivateKey);
int temp; fseek(inputFile,0,0); fread(&temp,sizeof(int),1,inputFile);
while(temp!=-1)
{ temp=binPow(temp,keys.e)%keys.n; char ch=A[temp]; fwrite(&ch,sizeof(char),1,outputFile);
fread(&temp,sizeof(int),1,inputFile); } fclose(outputFile); fclose(inputFile);}
…
5. Результати роботи
Рисунок 1 – Шифрування даних з використанням ранцевої криптосистеми Меркля-Хеллмана.
Висновок: На даній лабораторній роботі було засвоєно та реалізовано алгоритм RSA