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

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

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

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

Рік:
2016
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Інформаційні технології
Група:
КН-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:12-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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