DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Лабораторна робота № 2 з ММПЗ: Шифрування даних методом квадратів

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Факультет комп’ютерних наук
Кафедра:
Кафедра автоматизованих систем управління

Інформація про роботу

Рік:
2009
Тип роботи:
Лабораторна робота
Предмет:
Методи та моделі прийняття рішень
Група:
КН- 411
Коротко про документ

Про що ця робота

У цій лабораторній роботі студенти ознайомлюються з методом квадратів для шифрування даних. Робота містить програму на мові C, яка генерує ключі, шифрує та дешифрує текстові повідомлення.

У роботі розглядаються

  • Шифрування даних
  • Метод квадратів
  • Генерація ключів
  • Програмування мовою C
  • Алгоритми захисту інформації
  • Дешифрування повідомлень

Зміст і розділи

  1. Тема
  2. Мета
  3. Хід роботи
  4. Текст першої частини
  5. Текст другої частини
  6. Текст третьої частини
  7. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, які вивчають криптографію та захист інформації.
Викладачі:Костовський О. В.

Ключові поняття

шифрування данихметод квадратівгенерація ключівдешифруванняалгоритмпрограмамасивфайлмова Cтаблиця

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра автоматизованих систем управління  Лабораторна робота № 2 з ММПЗ Тема: Шифрування даних методом квадратів. Мета: Ознайомитися з методом квадратів для шифрування даних. Написати програму, яка б демонструвала роботу алгоритму. Хід роботи Написана мною програма складається з трьох частин. Перша – генерує ключі. Друга - шифрує дані. Третя – їх дешифровує. Текст першої частини: #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> #define N 16 #define M 256 void main(void){ /* unsigned char*/ int a[N][N],b[N][N],c[N][N],d[N][N],r; int i,j,ii,jj; FILE* f; char keyfilename[100], text[256], crypted[256],cryptfilename[100]; int syma,symb; int flag=1; randomize(); clrscr(); //=============================================== for(i=0;i<N;i++) for(j=0;j<N;j++){ a[i][j]=0; b[i][j]=0; c[i][j]=0; d[i][j]=0; keyfilename[i]=0; text[i]=0; crypted[i]=0; cryptfilename[i]=0; } //================================================ for(i=0;i<N;i++) for(j=0;j<N;j++){ //flag=1; do{ flag=1; r=random(M); for(ii=0;ii<i;ii++) for(jj=0;jj<=N;jj++) if(a[ii][jj]==r){ flag=0; break; } if(flag!=0) for(jj=0;jj<j;jj++) if(a[i][jj]==r) flag=0; }while(flag==0); a[i][j]=r; } //=============================================== for(i=0;i<N;i++) for(j=0;j<N;j++){ //flag=1; do{ flag=1; r=random(M); for(ii=0;ii<i;ii++) for(jj=0;jj<=N;jj++) if(b[ii][jj]==r){ flag=0; break; } if(flag!=0) for(jj=0;jj<j;jj++) if(b[i][jj]==r) flag=0; }while(flag==0); b[i][j]=r; } //================================================ for(i=0;i<N;i++) for(j=0;j<N;j++){ //flag=1; do{ flag=1; r=random(M); for(ii=0;ii<i;ii++) for(jj=0;jj<=N;jj++) if(c[ii][jj]==r){ flag=0; break; } if(flag!=0) for(jj=0;jj<j;jj++) if(c[i][jj]==r) flag=0; }while(flag==0); c[i][j]=r; } //================================================ for(i=0;i<N;i++) for(j=0;j<N;j++){ //flag=1; do{ flag=1; r=random(M); for(ii=0;ii<i;ii++) for(jj=0;jj<=N;jj++) if(d[ii][jj]==r){ flag=0; break; } if(flag!=0) for(jj=0;jj<j;jj++) if(d[i][jj]==r) flag=0; }while(flag==0); d[i][j]=r; } //================================================ // printf("Vveditj imja fajly dlja zbere*ennja cljy4a\n"); // gets(keyfilename); //================================================ do{ printf("Vveditj imja fajly dlja zbere*ennja cljy4a\n"); gets(keyfilename); f=fopen(keyfilename,"w"); }while(f==NULL); for(i=0;i<N;i++){ for(j=0;j<N;j++) fprintf(f,"%d ",a[i][j]); fprintf(f,"\n"); } fprintf(f,"\n"); for(i=0;i<N;i++){ for(j=0;j<N;j++) fprintf(f,"%d ",b[i][j]); fprintf(f,"\n"); } fprintf(f,"\n"); for(i=0;i<N;i++){ for(j=0;j<N;j++) fprintf(f,"%d ",c[i][j]); fprintf(f,"\n"); } fprintf(f,"\n"); for(i=0;i<N;i++){ for(j=0;j<N;j++) fprintf(f,"%d ",d[i][j]); fprintf(f,"\n"); } fclose(f); //================================================= } Результатом роботи є файл ключа, який має вигляд чотирьох таблиць розміром 16х16.  Текст другої частини: #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> #define N 16 #define M 256 void main(void){ int a[N][N],b[N][N],c[N][N],d[N][N],r; int i,j,ii,jj; FILE* f; char keyfilename[100], text[256], crypted[256],cryptfilename[100]; int syma,symb; int flag=1; randomize(); clrscr(); //=============================================== for(i=0;i<N;i++) for(j=0;j<N;j++){ a[i][j]=0; b[i][j]=0; c[i][j]=0; d[i][j]=0; keyfilename[i]=0; text[i]=0; crypted[i]=0; cryptfilename[i]=0; } do{ printf("Vveditj imja fajly dlja 4utannja cljy4a\n"); gets(keyfilename); f=fopen(keyfilename,"r"); }while(f==NULL); printf("Vveditj re4ennia\n"); gets(text); for(i=0;i<N;i++){ for(j=0;j<N;j++) fscanf(f,"%d ",&a[i][j]); } for(i=0;i<N;i++){ for(j=0;j<N;j++) fscanf(f,"%d ",&b[i][j]); } for(i=0;i<N;i++){ for(j=0;j<N;j++) fscanf(f,"%d ",&c[i][j]); } for(i=0;i<N;i++){ for(j=0;j<N;j++) fscanf(f,"%d ",&d[i][j]); } fclose(f); do{ printf("Vveditj imja fajla dlja zbere8ennja shufrovanoho texty\n"); gets(cryptfilename); f=fopen(cryptfilename,"w"); }while(f==NULL); int pos=0,ia,ja,ib,jb; if(strlen(text)%2==1) strcat(text," "); while(pos<strlen(text)){ syma=text[pos]; symb=text[pos+1]; for(i=0;i<N;i++) for(j=0;j<N;j++) if(a[i][j]==syma){ ia=i; ja=j; break; } for(i=0;i<N;i++) for(j=0;j<N;j++) if(b[i][j]==symb){ ib=i; jb=j; break; } crypted[pos]=c[ia][jb]; crypted[pos+1]=d[ib][ja]; pos+=2; } for(i=0;i<strlen(crypted);i++){ fprintf(f,"%d ",(unsigned char)crypted[i]); } fclose(f); getch(); }  Текст третьої частини: #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> #define N 16 #define M 256 void main(void){ /*unsigned char*/int a[N][N],b[N][N],c[N][N],d[N][N],r; int i,j,ii,jj; FILE* f; char keyfilename[100], text[256], crypted[256],cryptfilename[100]; unsigned char syma,symb; int flag=1; randomize(); clrscr(); //=============================================== for(i=0;i<N;i++) for(j=0;j<N;j++){ a[i][j]=0; b[i][j]=0; c[i][j]=0; d[i][j]=0; keyfilename[i]=0; text[i]=0; crypted[i]=0; cryptfilename[i]=0; } //================================================ do{ printf("Vveditj imja fajla dlja 4utannia shufrovanoho texty\n"); gets(cryptfilename); f=fopen(cryptfilename,"r"); }while(f==NULL); i=0; while(!feof(f)){ fscanf(f,"%d ",&j); crypted[i]=(char)j; i++; } fclose(f); do{ printf("Vveditj imja fajly dlja 4utannja cljy4a\n"); gets(keyfilename); f=fopen(keyfilename,"r"); }while(f==NULL); //================================================ for(i=0;i<N;i++) for(j=0;j<N;j++){ fscanf(f,"%d ",&a[i][j]); } //=============================================== for(i=0;i<N;i++) for(j=0;j<N;j++){ fscanf(f,"%d ",&b[i][j]); } //================================================ for(i=0;i<N;i++) for(j=0;j<N;j++){ fscanf(f,"%d ",&c[i][j]); } //================================================ for(i=0;i<N;i++) for(j=0;j<N;j++){ fscanf(f,"%d ",&d[i][j]); } //================================================ fclose(f); //================================================= int pos=0,ic,jc,id,jd; while(pos<strlen(crypted)){ syma=crypted[pos]; symb=crypted[pos+1]; for(i=0;i<N;i++) for(j=0;j<N;j++) if(c[i][j]==(int)syma){ ic=i; jc=j; break; } for(i=0;i<N;i++) for(j=0;j<N;j++) if(d[i][j]==symb){ id=i; jd=j; break; } text[pos]=a[ic][jd]; text[pos+1]=b[id][jc]; pos+=2; } for(i=0;i<strlen(text);i++){ printf("%c",text[i]); } getch(); }  Висновок: на цій лабораторній роботі, я ознайомився з алгоритмом квадратів, для шифрування даних і написав програму, яка демонструє його роботу.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!