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

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

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

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

Шифри Афінний і RSA

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

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

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

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

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

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

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

  • Алгоритм RSA
  • Симетричне шифрування
  • Програмування на C
  • Блок-схема програми
  • Криптографічний захист

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

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

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

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

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

      Завдання 1. Симетричне шифрування Вибрати ключі та розробити програму для зашифрування файлу даних заданим афінним шифром. Тип афінного шифру визначається останньою цифрою і НЗК (Таблиця 1). Об'єм алфавіту NА визначається передостанньою цифрою j НЗК і дорівнює 2(5+і) при j ≠ 3 і 215 при j = 3. Номер залікової книжки 90085 Отже тип афінного шифру - 5 mod6=5 (афінний 3-го порядку) Об’єм алфавіту 2(13) Програма шифрування #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; } int j,a3,a1,a2,i; int klych1[]={1,1,1,0,0,1,1,1,1,0,0,0,0}; /*задаємо значення ключів і зсувів*/ int klych2[]={0,1,1,0,0,1,1,1,1,0,0,0,0}; int klych3[]={0,1,1,0,0,1,1,0,1,0,0,0,0}; int zsyv1[]={0,1,1,0,0,1,1,1,1,0,0,0,0}; int zsyv2[]={0,1,1,0,0,1,1,1,1,0,0,0,0}; int zsyv3[]={0,1,1,0,0,1,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++) /*знаходимо значення ключа 1-го*/ {{ if (1==klych1[i]) k[i]=pow(2,i); else k[i]=0;} a1=a1+k[i];} for(i=0;i<13;i++) /*знаходимо значення зсуву 1-го*/ {{ if (1==zsyv1[i]) k[i]=pow(2,i); else k[i]=0;} b1=b1+k[i];} for(i=0;i<13;i++) /*знаходимо значення ключа 2-го*/ {{ if (1==klych2[i]) k[i]=pow(2,i); else k[i]=0;} a2=a2+k[i];} for(i=0;i<13;i++) /*знаходимо значення зсуву 2-го*/ {{ if (1==zsyv2[i]) k[i]=pow(2,i); else k[i]=0;} b2=b2+k[i];} for(i=0;i<13;i++) /*знаходимо значення ключа 3-го*/ {{ if (1==klych3[i]) k[i]=pow(2,i); else k[i]=0;} a3=a3+k[i];} for(i=0;i<13;i++) /*знаходимо значення зсуву 3-го*/ {{ 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 ); } текст повідомлення: текст для за шифрування крипто текст: ецйшкечрст.бзчздччзфщяч Блок схема програми  а) Зашифрувати Слово відкритого тексту за алгоритмом RSA. Слово визначається останньою буквою і НЗК і задане в Таблиці 2. Для генерування ключів використати числа р та q, які визначаються передостанньою цифрою j НЗК і задані в Таблиці 3. Букви тексту замінити натуральними числами, що відповідають порядковому номеру букви в українському алфавіті. Наприклад А=00, Б=01, В=02 і т.д. отже і=5 тоді потрібно зашифрувати слово (хід) де Р=7 ,а Ч=17 n=p*q=7*13=91 f(n)=n-p-q+1=91-7-13+1=72 e=3 d=19 шифрування слова д=25,в=11,а=05 25^3mod91=64 11^3mod91=57 05^3mod91=34 зашифрований текст: 64 57 34 б) Скласти програму зашифрування файлу за алгоритмом RSA. Об'єм алфавіту кодування - na . Величина блоку - 4 ]og2 NA [. Величина блоку =16 об’єм алфавіту=13 ТЕОРИТИЧНІ ВІДОМОСТІ   Програма шифрування #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=231;p=11; /*формуємо початкові умови шифрування*/ 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(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; for (int i=0;i<13*2;i++) { slovo=(slovo<<1) | z & 1; z= (z>>1); } /*здійснюєм піднесення до степеня по модулю*/ 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; } текст повідомлення: текст для за шифрування крипто текст: 6ebut%=+q ?%w 6&r+5р№4;! Блок схема програми  Висновок: в даному курсовому проекті сформовано два шифри Афінний і RSA. На базі теоретичних знань було написано програми шифрування тексту даних шифрів та аналіз програми за допомогою блок-схеми.
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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