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

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

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

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

Звіт про виконання лабораторної роботи № 3 «Криптографічні системи та протоколи»

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

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

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

Рік:
2012
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Криптографічні системи та протоколи
Група:
КН-1
Коротко про документ

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

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

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

  • Криптографічні системи
  • Афінні шифри
  • Програмне забезпечення
  • Математичний апарат
  • Захист інформації
  • Алгоритми шифрування

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

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

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

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

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

Міністерство освіти і науки України Національний університет «Львівська Політехніка» Інститут комп’ютерних технологій автоматики та метрології Кафедра Безпеки Інформаційних Технологій  Звіт Про виконання лабораторної роботи № 3 “Криптографічні системи та протоколи” Львів 2012 Мета роботи: Вивчити математичний апарат для опису афінних шифрів та розробити програмне забезпечення для реалізації афінних шифрів. Теоретичні відомості Афінний шифр k-го порядку. Ключ: A(GLk(Zn) і S( Znk. Шифрування. Повідомлення розбивається на k-грами. Кожна k-грама X заміщується k-грамою E(X)=AX+S. Розшифрування. Кожна k-грама X' криптотексту заміщується k-грамою D(X’)=A’X’+S’, де A’=A-1 і S’=–A’S - розшифровуючий ключ. Нехай потрібно зашифрувати повідомлення місто за допомогою ключа  i  в Z33. Частину операції зашифрування наведено вище. Після розбиття повідомлення на вектори-біграми і множення на них матриці А за модулем 33 було отримано . Додаємо до кожного стовпчика вектор S і отримуємо  тобто криптотекст ияґхуч. Знайдемо також розшифровуючий ключ. У попередньому прикладі було отримано матрицю . Обчислюємо . Провівши розшифрування, одержимо , а саме повідомлення містоа. ЗАВДАННЯ 1) Вивчити основні математичні залежності, які використовуються для опису шифрів зсуву, лінійного та афінного першого та вищих порядків. 2) Скласти блок-схеми алгоритмів та програму для реалізації зашифрування та розшифрування відкритого тексту за допомогою афінного шифру 3-го порядку. Блок-схема: Остаточна версія програми: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { if (jRadio1.isSelected() == true) { String inpt = this.inText.getText(); StringBuilder sb = new StringBuilder(inpt); if (sb.length() != 0) { while (!Character.isLetter(sb.charAt(0))) { sb.deleteCharAt(0); } // continue text cleaning. for (int i = 0; i < sb.length(); i++) { if (!Character.isLetter(sb.charAt(i)) && !Character.isWhitespace(sb.charAt(i))) { sb.setCharAt(i, ' '); } } for(int i = 0; i<sb.length(); i++){ if(Character.isWhitespace(sb.charAt(i))){ sb.deleteCharAt(i); } } for(int i = 0; i<sb.length(); i++){ if(Character.isWhitespace(sb.charAt(i))){ sb.deleteCharAt(i); } } } for(;;){ if(sb.length()%3 != 0){ sb.append("а"); } else break; } inpt = sb.toString(); int a[] = new int [9]; //ключ String keyStr = this.jKey1.getText(); char keyCh [] = keyStr.toCharArray(); for(int i = 0; i<9; i++){ a[i] = (int)keyCh[i]; } int s[] = new int [3]; String key2 = this.jKey2.getText(); char [] key2c = key2.toCharArray(); for(int i = 0; i<3; i++){ s[i] = (int)key2c[i]; } char kchar[] = inpt.toCharArray(); int kn[] = new int [kchar.length]; int k[] = new int [kchar.length]; for (int i = 0; i<kchar.length; i++){ k[i] = kchar[i]-1071; } for (int i = 0; i<inpt.length(); i = i+3){ kn[i]=a[0]*k[i]+a[1]*k[i+1]+a[2]*k[i+2]+s[0]; kn[i+1]=a[3]*k[i]+a[4]*k[i+1]+a[5]*k[i+2]+s[1]; kn[i+2]=a[6]*k[i]+a[7]*k[i+1]+a[8]*k[i+2]+s[2]; int j; for (j = 0;; j++){ if (kn[i] > 33){ kn[i] = kn[i]-33; } else break; } for (j = 0;; j++){ if (kn[i+1] > 33){ kn[i+1] = kn[i+1]-33; } else break; } for (j = 0;; j++){ if (kn[i+2] > 33){ kn[i+2] = kn[i+2]-33; } else break; } kn[i]=kn[i]+1071; kn[i+1]=kn[i+1]+1071; kn[i+2]=kn[i+2]+1071; } StringBuffer v = new StringBuffer(); for(int i=0; i<=kn.length-1; i++){ v.append((char)kn[i]); } String vv = v.toString(); this.outText.setText(vv); } } Результати роботи програми: 
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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