Дослідження шифрів заміни, перестановки, гамування

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

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

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

Рік:
2018
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Інформаційні технології
Група:
КН-32

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

Міністерство освіти і науки України Національний університет «Львівська політехніка» Інститут комп’ютерних наук та інформаційних технологій Кафедра АСУ Звіт Про виконання лабораторної роботи №1 з дисципліни «Технології захисту інформації» на тему: «Дослідження шифрів заміни, перестановки, гамування» Мета роботи: Дослідження алгоритму та методики практичної реалізації шифрів на заміни, перестановки та гамування. Послідовність виконання роботи: Кодування і декодування алгоритмом заміни. Кодування і декодування методом перестановки Кодування і декодування методом гамування. Кодування і декодування алгоритмом Цезаря за допомогою програмного засобу. Хід роботи: Вхідна текстова послідовність для кодування і декодування всіма методами: «ось моя таємниця вона дуже проста лише серце добре бачить». Кодування і декодування алгоритмом заміни. Вихідним алфавітом є малі літери українського алфавіту та пробіл. Для побудови ключа скористаємось процедурою рандомізації, тобто перемішаємо вихідний алфавіт у випадковому порядку. Отримуємо такий ключ: а б в г ґ д е є ж з и і ї й к л м н о п р с т у ф х ц ч ш щ ь ю я   б л з а п у х с я н к е ґ і и ю ц ч є й г р ї в м ф щ ж о ш  т д ь  Кодована послідовність: єр ьцєдьїбсцчкшдьзєчбьувяхьйгєрїбьюкохьрхгшхьуєлгхьлбжкї Аналогічно для декодування формується таблицю розшифрування: а б в г ґ д е є ж з и і ї й к л м н о п р с т У ф х ц ч ш щ ь ю я   г а у р ї я і о ч в к й т п и б ф з ш ґ с є ю д х е м н щ ц  л ж ь   За допомогою цієї таблиці розшифровуємо кодований текст. Декодована послідовність: ось моя таємниця вона дуже проста лише серце добре бачить Кодування і декодування методом перестановки Створення ключа Ключем для шифру перестановки буде слугувати гасло — слово «жебрак». На основі гасла створюємо таблицю, яка буде використовуватись для шифрування (шкала рознесення). Кількість стовпців у таблиці дорівнює кількості літер у гаслі. Пронумеруємо кожен стовпчик таблиці таким чином, щоб менший порядковий номер літери гасла у алфавіті отримав менше число. Ж Е Б Р А К  4 3 2 6 1 5  Шифрування Дано наступний відкритий текст: «Не я належу минулому, а минуле належить мені». Опускаємо неалфавітні символи тексту і вписуємо його до таблиці послідовно по-рядково: Ж Е Б Р А К  4 3 2 6 1 5  о с ь ц я м  о я т а є м  н и ц я в о  н а д у ж е  п р о с а и  Виписуємо літери із стовпців таблиці: у порядку нумерації стовпців, зверху вниз. Отримуємо такий шифротекст (для зручності розбитий на групи по п'ять символів): Яєвжа ьтцдо сяиар ооннп ммоеи цаяус Дешифрування Для розшифрування шифротексту треба виконати обернену послідовність дій: у порядку номерів стовпчиків вписати до таблиці зверху вниз шифротекст і потім виписати послідовно порядково вихідний текст повідомлення. Кодування і декодування методом гамування. Створення ключа: Для шифрування методом гамування необхідно визначити алфавіт, на основі якого будуть створюватись повідомлення та ключ. Також кожному символу треба надати послідовний номер (код), який буде використовуватись при гамуванні. а б в г ґ д е є ж з и і ї й к л м н о п р с т у ф х ц ч ш щ ь ю я  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32  У якості основи гами (ключ) зручно обрати слово-гасло. Нехай це буде «інформація». Сама гама має довжину відкритого повідомлення і складається із повторення гасла. Шифрування Приводимо вхідний текст до канонічного вигляду, тобто викидаємо yci символи, що відсутні в означеному алфавіт. Отримуємо: осьмоятаємницявонадужепроста Складаємо таблицю із трьох рядків. Перший ряд О містить відкрите повідомлення, другий Г — гаму, третій S — шифрований текст. За умовою завдання гамування необхідно здійснити за формулою S = Г - О(mod 26). В результаті виконання усього процесу гамування отримуємо таблицю: O о с ь м о я т а є м н и ц я в о н а д у ж е п р о с т а  Г і н ф о р м а ц і я і н ф о р м а ц і я і н ф о р м а ц  S ц щ ч в в м и ц ґ м ц є ю о о л ц щ ч в в м и ц ґ є ю о   Зашифрованe повідомлення має такий вигляд: цщчввмицґмцєюоолцщчввмицґмцєюо Дешифрування Дешифрування відбувається у зворотньому порядку за формулою O = Г - S(mod 26). O о с ь м о я т а є м н и ц я в о н а д у ж е п р о с т а  Г і н ф о р м а ц і я і н ф о р м а ц і я і н ф о р м а ц  S ц щ ч в в м и ц ґ м ц є ю о о л ц щ ч в в м и ц ґ є ю о  Після розшифрування отримуємо: осьмоятаємницявонадужепроста Розшифроване повідомлення еквівалентне вихідному відкритому повідомленню. Це свідчить про правильність виконання процесів шифрування та дешифрування. Кодування і декодування алгоритмом Цезаря за допомогою програмного засобу. Закодуємо вхідний текст шифром Цезаря з кроком - 3, в результаті отримаємо: сфа псв хгипрйщв дсрг жціз тусфхг ойюз фзущз жсґуз ґгьйха Висновок. Під час виконання лабораторної роботи, я вивчив методи шифрування інформації і застосував ці знання на практиці. Програмно реалізував шифр Цезаря і протестував на заданій текстовій послідовності. Додаток 1. Код програми public class Main { String _alphabeth = "АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ"; public Main() throws IOException { Scanner sc = new Scanner(new File("input.txt")); FileOutputStream fos = new FileOutputStream("output.txt"); while(sc.hasNextLine()) { String s = sc.nextLine(); StringBuilder sb = new StringBuilder(); for(int i = 0; i<s.length(); i++) { sb.append(getShiftedChar(s.charAt(i), (short)3)); } System.out.println(sb); fos.write(sb.toString().getBytes()); fos.write(new byte[]{13, 10}); } sc.close(); fos.close(); } char getShiftedChar(char c, short shift) { int index; if((index = _alphabeth.indexOf(c)) != -1) { try { return _alphabeth.charAt(index + shift); } catch (StringIndexOutOfBoundsException e) { return _alphabeth.charAt(index + shift + (shift>0?-_alphabeth.length():_alphabeth.length())); } } if((index = _alphabeth.toLowerCase().indexOf(c)) != -1) { try { return _alphabeth.toLowerCase().charAt(index + shift); } catch (StringIndexOutOfBoundsException e) { return _alphabeth.toLowerCase().charAt(index + shift + (shift>0?-_alphabeth.length():_alphabeth.length())); } } return c; } }
Антиботан аватар за замовчуванням

04.12.2018 14:49

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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