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

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

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

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

Звіт до лабораторної роботи № 1 на тему: “Афінні шифри”

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

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

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

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

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

У звіті наведено розробку програми для реалізації афінного шифру другого порядку на мові C. Описано теоретичні відомості, наведено код програми та зроблено висновки щодо стійкості шифру.

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

  • Криптографія
  • Мова програмування C
  • Шифрування даних
  • Програмна реалізація

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

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

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

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

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

Міністерство освіти і науки України Національний університет Львівська політехніка  Звіт до лабораторної роботи № 1 на тему: “Афінні шифри” Перевірив Львів — 2010 Мета роботи: навчитися за допомогою афінного шифру 2-ого порядку перетворювати відкритий текст в криптотекст і навпаки. Написати програму реалізацїї даного методу шифрування та розшифрування на мові програмування С. Теоретичні відомості   Список використаних функцій, констант та змінних. alpha[] – масив в якому знаходяться букви латинського алфавіту; source[] – масив в який заноситься повідомлення; key[] – масив в який заноситься ключ; eresult[] та dresult[] – в ці масиви заносяться результати зашифрування та розшифрування у вигляді букв; digital_text[] та digital_key[] – масиви в які записується числова інтерпретація відкритого тексту та ключа, відповідно; A[], S[] – масиви в які записуються ключі в числовій інтерпретації; Ax[], Sx[] – масиви в які записуються ключі для розшифрування криптотексту; digital_eresult[] та digital_dresult[] – масиви в яких зберігаються результати зашифрування та розшифрування у вигляді їх індексів у відповідних алфавітах; i, j – змінні що використовуються в лічильниках циклів; tlen, klen – довжина повідомлення та довжина ключа відповідно; alen – довжина алфавіту; dlen – кількість стовпців в матриці, в яку записаний текст повідомлення; strlen() – визначення довжини рядка, який може бути заданий напряму або в масиві; Блок-схема програми      Код програми #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <math.h> void main() { char alfavit[]="abcdefghijklmnopqrstuvwxyz"; char slovo[2][10]={"oxk", "ykb" }; char kod[2][10]; char a1,a2,a3,a4; int k1,a11,a22,a33,a44,b1,b2,x1,s1,s2,x2,m,z1,z2,w,i,k,j; a1='b';a2='d';a3='d';a4='e';s1='b';s2='b';m=26; k=0;a11=0;a22=0;a33=0;a44=0; z1=0;z2=0; for(i=0;i<=25;i++) {if (a1==alfavit[i]) a1=i;} for(i=0;i<=25;i++) {if (a2==alfavit[i]) a2=i;} for(i=0;i<=25;i++) {if (a3==alfavit[i]) a3=i;} for(i=0;i<=25;i++) {if (a4==alfavit[i]) a4=i;} for(i=0;i<=25;i++) {if (s1==alfavit[i]) s1=i;} for(i=0;i<=25;i++) {if (s2==alfavit[i]) s2=i;} for(j=0;slovo[0][j]>0;j++) { k1=j;} k1=k1+1; for(j=0;j<k1;j++) {b1=slovo[0][j];b2=slovo[1][j]; for(i=0;i<=25;i++) {if (b1==alfavit[i]) b1=i;} for(i=0;i<=25;i++) {if (b2==alfavit[i]) b2=i;} b1=b1-s1; if (b1<0) {i=1;while (b1<0) b1=b1+i*m;i++; } else b1=b1%m; b2=b2-s2; if (b2<0) {i=1;while (b2<0) b2=b2+i*m;i++; } else b2=b2%m; w=a1*a4-a2*a3; if (w<0) {i=1;while (w<0) w=w+i*m;i++; } else w=w%m; for(i=0;i<=m;i++) { if (1==w*i%m) {k=i;break;} else k=0;} a11=(a4*k)%m; a22=-(a2*k);{ i=1; while (a22<=0) a22=a22+i*m;i++;} a33=-(a3*k); { i=1; while (a33<=0) a33=a33+i*m;i++;} a44=(a1*k)%m; z1=(a11*b1+a22*b2)%m;kod[0][j]=z1; z2=(a33*b1+a44*b2)%m;kod[1][j]=z2; } for(j=0;j<k1;j++) { for(i=0;i<=25;i++) {if (kod[0][j]==i) kod[0][j]=alfavit[i];} printf("\nvidpovid1:"); printf("%c",kod[0][j]); for(i=0;i<=25;i++) {if (kod[1][j]==i) kod[1][j]=alfavit[i];} printf("\nvidpovid2:"); printf("%c",kod[1][j]);} getch(); } #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <math.h> void main() { clrscr(); char alfavit[]="abcdefghijklmnopqrstuvwxyz"; char slovo[2][10]={"tty", "ybv" }; char kod[2][10]; char a1,a2,a3,a4,b1,b2,s1,s2,z1,z2; int j,i,x1,x2,m,k; a1='b';a2='d';a3='d';a4='e';s1='b';s2='b';m=26; for(i=0;i<=25;i++) {if (a1==alfavit[i]) a1=i;} for(i=0;i<=25;i++) {if (a2==alfavit[i]) a2=i;} for(i=0;i<=25;i++) {if (a3==alfavit[i]) a3=i;} for(i=0;i<=25;i++) {if (a4==alfavit[i]) a4=i;} for(i=0;i<=25;i++) {if (s1==alfavit[i]) s1=i;} for(i=0;i<=25;i++) {if (s2==alfavit[i]) s2=i;} for(j=0;slovo[0][j]>0;j++) { k=j;} k=k+1; for(j=0;j<k;j++) {b1=slovo[0][j];b2=slovo[1][j]; for(i=0;i<=25;i++) {if (b1==alfavit[i]) b1=i;} for(i=0;i<=25;i++) {if (b2==alfavit[i]) b2=i;} x1=(a1*b1+a2*b2)+s1; x2=(a3*b1+a4*b2)+s2; z1=x1%m; kod[0][j]=z1; z2=x2%m; kod[1][j]=z2; } for(j=0;j<k;j++) { for(i=0;i<=25;i++) {if (kod[0][j]==i) kod[0][j]=alfavit[i];} printf("\nvidpovid1:"); printf("%c",kod[0][j]); for(i=0;i<=25;i++) {if (kod[1][j]==i) kod[1][j]=alfavit[i];} printf("\nvidpovid2:"); printf("%c",kod[1][j]);} getch(); } Висновок В даній лабораторній роботі я вивчив і реалізував алгоритм кодування та розкодування афінним шифром 2-ого порядку. Нескладно зауважити, що афінний шифр не стійкий до атаки з вибором відкритого тексту. Суперникові достатньо довідатись, в які криптотексти переходять відповідні к-грами за вибраним вектором, що дозволяю повністю визначити ключ.
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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