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

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

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

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

Програма шифрування

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

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

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

Рік:
2015
Тип роботи:
Лабораторна робота
Предмет:
Криптографія
Група:
К
Коротко про документ

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

Документ містить програмний код та завдання для реалізації симетричного афінного шифру та асиметричного алгоритму RSA на мові C. Описано алгоритми зашифрування файлів та наведено блок-схеми.

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

  • Криптографія
  • Симетричне шифрування
  • Асиметричне шифрування
  • Алгоритм RSA
  • Програмування на C
  • Захист інформації

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

  1. Програма шифрування RSA
  2. Програма афінного шифру
  3. Блок-схема афінного шифру
  4. Блок-схема RSA
  5. Завдання №1 Симетричне шифрування
  6. Завдання №2 Асиметричне шифрування
Для кого:Студенти технічних спеціальностей, викладачі криптографії та програмування.
Викладачі:Викладач

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

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

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

Програма шифрування #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 = 1024000; char binarn(char a, int n, int m); void main() { clrscr(); char text[small_buff]; char btext[big_buff]; FILE *infile = fopen( "f:\\cc.txt", "rb" ); FILE *outfile = fopen( "f:\\result1.txt", "wb" ); size_t read_len = 0; size_t file_len = 0; while( read_len = fread(text, 1, small_buff, infile ) ) { memcpy( btext + file_len, text, read_len ); file_len += read_len; } int q,f,p,k,i,e,chuslo;q=5;p=13; chuslo=q*p; char slovo,slovo1,z; f=chuslo-p-q+1; printf(”vvedit proste chuslo e v mezax= “); printf(“%d\n”,f); printf("e="); scanf(“%d”,&e); for(i=0;i<=e;i++) { if (1==e*i%f) {k=i;break;} else k=0; } for(i=0,j=0;i<=file_len-2;i=i=3,j=j=4){ Z1=bigtext[i]; Z2= bigtext[i+1]; Z3= bigtext[i+2]; slovo=perevorot(Z1); text=zad(slovo,6,text); bigtextt[j]=text; text=0; text=zad(slovo,2,text); slovo=perevorot(Z11); text=zad(slovo,4,text); bigtextt[j+1]=text; text=0; text=zad(slovo,4,text); slovo=perevorot(Z111); text=zad(slovo,2,text); bigtextt[j+2]=text; text=0; text=zad(slovo,6,text); bigtextt[j+3]=text; } for(int j1=0;j1<file_len-2;j1=j1+2) { for(int j=1;j>=0;j--) {for (int i=0;i<13;i++) { z=(z<<1) | btext[j+j1] & 1; btext[j+j1]= (btext[j+j1]>>1); } }char slovo=0; int perevorot(int z) {int slovo; for (int i=0;i<8;i++) { slovo=(slovo<<1) | z & 1; z= (z>>1); } return slovo;} int zad(int slovo,int n,int z1) {int zz=0; for (int i=0;i<n;i++) { z1=(z1<<1) | slovo & 1; slovo = (slovo >>1); } zz=z1; return zz;} slovo=binarn(slovo,e,chuslo); for (int i=0;i<13*2;i++) { z=(z<<1) | slovo& 1; slovo= (slovo>>1); } for( j=1;j>=0;j--) { for (i=0;i<13;i++) { btext[j+j1]=(btext[j+j1]<<1) | z & 1; z= (z>>1) ; } } } fwrite( btext, 1, file_len, outfile ); fclose( infile ); fclose( outfile ); getch(); } char binarn(char a, int n, int m) { if (n == 1) return a % m; char z; z = binarn(a, n / 2, m); z = (z * z) % m; if (n % 2 == 1) z = (z * a) % m; return z; } текст повідомлення: 25 11 5 крипто текст: 25 46 5 Програма шифрування #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:\\cc.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; } for(i=0,j=0;i<=file_len-2;i=i=3,j=j=4){ Z1=bigtext[i]; Z2= bigtext[i+1]; Z3= bigtext[i+2]; slovo=perevorot(Z1); text=zad(slovo,6,text); bigtextt[j]=text; text=0; text=zad(slovo,2,text); slovo=perevorot(Z11); text=zad(slovo,4,text); bigtextt[j+1]=text; text=0; text=zad(slovo,4,text); slovo=perevorot(Z111); text=zad(slovo,2,text); bigtextt[j+2]=text; text=0; text=zad(slovo,6,text); bigtextt[j+3]=text; } int j,a3,a1,a2,i; int klych1[]={1,1,1,0,0,1,0,0}; int klych2[]={0,1,1,0,0,1,1, 0}; int klych3[]={1,1,0,1,0,0,0,0}; int zsyv1[]={0,1,1,0,0,0,0,0}; int zsyv2[]={0,1,1,0,0,0,0,0}; int zsyv3[]={0,1,1,1,0,0,0,0}; int kk,b1,b2,b3,k[13]; char zyb1; kk=pow(2,13); for(i=0;i<13;i++) {k[i]=0;} for(i=0;i<13;i++) {{ if (1==klych1[i]) k[i]=pow(2,i); else k[i]=0;} a1=a1+k[i];} for(i=0;i<13;i++) {{ if (1==zsyv1[i]) k[i]=pow(2,i); else k[i]=0;} b1=b1+k[i];} for(i=0;i<13;i++) {{ if (1==klych2[i]) k[i]=pow(2,i); else k[i]=0;} a2=a2+k[i];} for(i=0;i<13;i++) {{ if (1==zsyv2[i]) k[i]=pow(2,i); else k[i]=0;} b2=b2+k[i];} for(i=0;i<13;i++) {{ if (1==klych3[i]) k[i]=pow(2,i); else k[i]=0;} a3=a3+k[i];} for(i=0;i<13;i++) {{ if (1==zsyv3[i]) k[i]=pow(2,i); else k[i]=0;} b3=b3+k[i];} kk=pow(2,13); for(j=0;j<file_len-3;j=j+3) { bigtext[j]=bigtext[j]*a1+ bigtext[j+3]*a2+ bigtext[j+6]*a3+b1; bigtext[j]=bigtext[j]%kk; bigtext[1+j]=bigtext[1+j]*a1+ bigtext[1+j+3]*a2+ bigtext[1+j+3+3]*a3+b2; bigtext[1+j]=bigtext[1+j]%kk; bigtext[2+j]=bigtext[2+j]*a1+ bigtext[2+j+3]*a2+ bigtext[2+j+3+3]*a3+b3; bigtext[2+j]=bigtext[2+j]%kk; } FILE *outfile = fopen( "f:\\resul.txt", "w" ); fwrite( bigtext, 1, file_len, outfile ); fclose( infile ); fclose( outfile ); } int perevorot(int z) {int slovo; for (int i=0;i<8;i++) { slovo=(slovo<<1) | z & 1; z= (z>>1); } return slovo;} int zad(int slovo,int n,int z1) {int zz=0; for (int i=0;i<n;i++) { z1=(z1<<1) | slovo & 1; slovo = (slovo >>1); } zz=z1; return zz;} текст повідомлення: whoisonthefloor крипто текст: ewiodkfmoeops Блок схема програми зашифрування лінійним афінним шифром  SHAPE \* MERGEFORMAT  Заносимо у файлу I=0…6 i=i+1 Початок 1==key[i] k1[i]=pow(2,i); a=a+k1[i]; I=0..file_len-2 i++ big_text[j]=big_text[j]*a; big_text[j]=big_text[j]%k2; Зчитуємо з файлу кінець  Блок-схема програми зашифрування алгоритмом RSA  SHAPE \* MERGEFORMAT  початок Зчитування з файлу Знаходимо довжину тексту J1=0..file_len j1=j1+2 J=1…0 j=j-1 I=0..13 i=i+1 btext[j+j1]=(btext[j+j1]<<1) | z & 1; z= (z>>1) ; z=binarn(z,e,n1); J=1…0 j=j-1 I=0..6 i=i+1 btext[j+j1]=(btext[j+j1]<<1) | z & 1; z= (z>>1) ; кінець  Завдання №1 Симетричне шифрування Вибрати ключі та розробити програму для зашифрування файлу даних лінійним афінним шифром 3-ого порядку (2 + 1 mod 4 = 3). Об’єм афлавіту NA повинен становити 64 (25+1 = 26 = 64). Завдання №2 Асиметричне шифрування Зашифрувати слово ХІД відкритого тексту за алгоритмом RSA. Дані параметри згідно з варіантом: p = 5, q = 13; n = p * q = 658; phi(n) = (p - 1) * (q - 1) = 48; е = 17, було обране навмання з діапазону 1 < e < phi(n), таке що НСД(е, phi(n)) = 1. Представлення слова ХІД у цифровій формі Х=25 І=11 Д=5, тобто {25,11,5}. 1. Афінні шифри. 
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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