Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №3 Головков И. Е

..docx
Скачиваний:
0
Добавлен:
26.06.2024
Размер:
79.35 Кб
Скачать

ФЕДЕРАЛЬНОЕ Государственное АВТОНОМНОЕ образовательное УЧРЕЖДЕНИЕ ВЫСШЕГО образования

«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ

ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»

(НИУ «БелГУ»)

ИНСТИТУТ ИНЖЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ

Отчет по лабораторной работе № 3

Вариант № 6

Тема работы «Алгоритм Цезаря, алгоритм Виженера»

по дисциплине «Методы и средства защиты информации»

студента очного отделения

3 курса 12002108 группы

Головкова Игоря Евгеньевича

Проверил:

доц. Титов А. И.

БЕЛГОРОД

2023

Цель работы: применить на практике знания по алгоритмам шифрования Цезаря и Виженера. Реализовать алгоритмы программно. Шифровать/дешифровать сообщения при помощи написанного программного обеспечения.

Ход работы:

  • Выбрать алфавит, подходящий для шифрования сообщения полученного в ходе выполнения Лабораторной работы №1

  • Реализовать программное обеспечение для шифрования/дешифрования при помощи выбранного алфавита и алгоритма

  • Зашифровать сообщение – сохранить результат в файл

  • Закрыть программное обеспечение

  • Открыть программное обеспечение – дешифровать файл.

  • Сравнить полученный файл с исходным

  • Сделать выводы

Исходный текст для шифрования:

Весьма примечательны атрибуты современного научного мышления - элементы симметрии и асимметрии. Нет ли их в обобщенной модели управления, не раскрывают ли они еще глубже негэнтропийную функцию механизма управления, ее системоорганизующую роль? Поставлена также задача рассмотреть место таких парных философских категорий, как: устойчивость-изменчивость, функция-структура, движение-развитие (в феномене управления). Оказывается, они весьма наглядно подставлены в обобщенной модели управления и имеют самое прямое отношение к понятиям симметрии и асимметрии, что доходчиво иллюстрируется рядом схем и примеров.

Зашифрованный текст (ключ шифрования - «ГРАД»:

Ехсѐпр уушмйъртйоќня#ртфлсуцю0стеѐериэнтжю сгѓчссуо$пћшпиэиѓ#= ёохмйрђы$фшмриђрмл0и$гёирпхтфлш.$Рхт$ош мш0в$ссоеьхнссщ рсфепл0ууурвпиэиѓ/0нй#ѐахнѐыжгўт$ош трш йьх зоѓбки0нйжѝнцуюпммэуђ#єусніиђ#ьещгэилпр чтѐажохнмђ< йи0смфђерсюрзгэилцўщчё0ртоќ?$Тюсцгтлйрр цгъжй#чаигїа$урсхпютфиђь$пхсцс0тдншх$тррсюѕ шлыохсєсолѕ огђезсѐин/0кднJ чфђонъшвтфђь1лчмйрїижсётѐ/0фчръцмђ=сцуѓкццѐа0#фвмйхнми=рдктицлх ,е0фйрюмйрх чтѐажохнмђ9.$Съалютайхёя0#юнм#техяьа$рргпђфнт#яоифђажохня#т тдюбэиэнтм0мтзхлм#ѓпфгтлйршя$л0ириўт$фрмти0пфђьой#ютссјеслх о#яосђђиѓп0смпьецуши$л0ахльмйхѐим/0чцс0дтшюдылто$лылђфђрмуѓецфџ фђфор#ёхйп0и$тѐириѐож1

Б лок-схема алгоритма представлена на рисунке 1.

Рисунок 1– Блок-схема алгоритма

Листинг программы на языке Java:

package org.infoprotection; import java.io.*; import java.util.Scanner; public class Vigenere { static Scanner read = new Scanner(System.in); public static void main(String[] args) { Vigenere vigenere = new Vigenere(); vigenere.chooseMode(); } private void chooseMode() { BufferedReader bufferedReader; BufferedWriter bufferedWriter; System.out.println(""" Введите номер требуемой функции программы: 1. Зашифровать с помощью шифра Виженера 2. Расшифровать с помощью шифра Виженера 0. Завершить работу """); switch (Integer.parseInt(read.nextLine())) { case 1 -> { bufferedReader = initBufferedReader(); bufferedWriter = initBufferedWriter(); encryptVigenere(bufferedReader, bufferedWriter); System.out.println("Зашифровано"); } case 2 -> { bufferedReader = initBufferedReader(); bufferedWriter = initBufferedWriter(); decryptVigenere(bufferedReader, bufferedWriter); System.out.println("Расшифровано"); } default -> { return; } } closeBufferedReader(bufferedReader); closeBufferedWriter(bufferedWriter); chooseMode(); } private BufferedReader initBufferedReader() { System.out.println("Введите имя входного файла: "); String fileNameRead = read.nextLine(); try { return new BufferedReader(new InputStreamReader((new FileInputStream(new File(fileNameRead))))); } catch (FileNotFoundException e) { throw new RuntimeException(e); } } private void closeBufferedReader(BufferedReader bufferedReader) { try { bufferedReader.close(); } catch (IOException e) { throw new RuntimeException(e); } } private BufferedWriter initBufferedWriter() { System.out.println("Введите имя выходного файла : "); String fileNameWrite = read.nextLine(); try { return new BufferedWriter(new OutputStreamWriter((new FileOutputStream(new File(fileNameWrite))))); } catch (IOException e) { throw new RuntimeException(e); } } private void closeBufferedWriter(BufferedWriter bufferedWriter) { try { bufferedWriter.close(); } catch (IOException e) { throw new RuntimeException(e); } } private void encryptVigenere(BufferedReader bufferedReader, BufferedWriter bufferedWriter) { System.out.println("Введите ключ: "); char[] key = read.nextLine().toCharArray(); try { char[] word = bufferedReader.readLine().toCharArray(); for (int i = 0; i < word.length; i++) { word[i] += (char) (key[i % (key.length)] - 'А'); bufferedWriter.write((word[i])); } } catch (IOException e) { throw new RuntimeException(); } } private void decryptVigenere(BufferedReader bufferedReader, BufferedWriter bufferedWriter) { System.out.println("Введите ключ"); char[] key = read.nextLine().toCharArray(); try { char[] word = bufferedReader.readLine().toCharArray(); for (int i = 0; i < word.length; i++) { word[i] -= (char) (key[i % (key.length)] - 'А'); bufferedWriter.write((word[i])); } } catch (IOException e) { throw new RuntimeException(); } } }

Вывод: были применены на практике знания по алгоритмам шифрования Цезаря и Виженера с помощью программной реализации.