Файл: Лабораторная работа 2 По дисциплине Кроссплатформенное программирование. Фамилия Волков Имя Кирилл.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 22.11.2023

Просмотров: 60

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ им. проф. М.А. Бонч-БруевичаФАКУЛЬТЕТ ИНСТИТУТ НЕПРЕРЫВНОГО ОБРАЗОВАНИЯЛабораторная работа №2По дисциплине Кроссплатформенное программирование.Фамилия: ВолковИмя: КириллОтчество: ВладимировичКурс:3Дата сдачи работы _22.04.2023Санкт-Петербург2023 Цель и назначение работыИзучение общих принципов программирования в среде java.Написание приложения, осуществляющего «шифрование» текста путемпреобразования символов с помощью побитовых операций.Необходимо создать консольное приложение, осуществляющее«шифрование» небольшого текста путем сложения по "XOR" числового кодакаждого символа с ключом "sekret". Кроме сложения по "XOR", приложениедолжно поддерживать шифрование с помощью циклического сдвига назаданное число позиций. Текст для шифрования взять произвольно вколичестве не менее трех строк. Приложение должно иметь текстовое менюсо следующими пунктами:1. Шифрование с помощью операции "XOR"2. Шифрование с помощью циклического сдвига3. Ввести число позиций для шифрования путем циклического сдвигаПри выборе пунктов 1 и 2, приложение должно распечатывать исходныйтекст, зашифрованный текст и расшифрованный текст.При выборе пункта 3 приложение должно запросить у пользователя число,которое определяет величину сдвига, затем также распечатать исходный,зашифрованный и расшифрованный текст. Числовое значение буквыисходного текста брать по её порядковому номеру в алфавите. Так букве "А"соответствует число 1, букве "Б" соответствует число 2 и т.д. Регистр букв неучитывать.Ход работы

  1. Пишем исходный код программы:
import java.util.Scanner;public class App{
private static final int DEFAULT_SHIFT_POSITION_NUMBER = 1;private static final String XOR_ENCRYPTION_KEY = "sekret";private static String xorEncryption(String text, String key){char[] encrypted = new char[text.length()];char[] source = text.toCharArray();char[] keyChars = key.toCharArray();for(int i = 0; i < text.length(); i++){encrypted[i] = (char)(source[i] ^ keyChars[i % key.length()]);}return new String(encrypted);}private static String cyclicShiftEncryption(String text, int positionNumber){char[] encrypted = new char[text.length()];char[] source = text.toCharArray();for(int i = 0; i < text.length(); i++){encrypted[i] = (char)(source[i] + positionNumber);}return new String(encrypted);}private static String cyclicShiftDecryption(String text, int positionNumber){return cyclicShiftEncryption(text, -positionNumber);}public static void main(String[] args){try(Scanner scanner = new Scanner(System.in)){System.out.println("Please input source text:");StringBuilder sourceTextBuilder = new StringBuilder();String line;while(!(line = scanner.nextLine()).isEmpty()){sourceTextBuilder.append(line).append('\n');}String sourceText = sourceTextBuilder.toString();System.out.println("Source text is:\n" + sourceText);System.out.println();System.out.println();System.out.println("Please choose one of the above:");System.out.println("\t1)XOR encryption");System.out.println("\t2)Cyclic shift encryption");System.out.println("\t3)Input positions number for cyclic shift encryption");int input = scanner.nextInt();switch(input){case 1:System.out.println("Source text is: ");System.out.println(sourceText);System.out.println();System.out.println("Encrypted text is ");String xorRncrypted = xorEncryption(sourceText, XOR_ENCRYPTION_KEY);System.out.println(xorRncrypted);System.out.println();System.out.println("Decrypted text is ");System.out.println(xorEncryption(xorRncrypted, XOR_ENCRYPTION_KEY));break;case 2:System.out.println("Source text is: ");System.out.println(sourceText);System.out.println();System.out.println("Encrypted text is ");String cyclicShiftEncrypted = cyclicShiftEncryption(sourceText,DEFAULT_SHIFT_POSITION_NUMBER);System.out.println(cyclicShiftEncrypted);System.out.println();System.out.println("Decrypted text is ");System.out.println(cyclicShiftDecryption(cyclicShiftEncrypted,DEFAULT_SHIFT_POSITION_NUMBER));break;case 3:int shiftNumber = scanner.nextInt();System.out.println("Source text is: ");System.out.println(sourceText);System.out.println();System.out.println("Encrypted text is ");String numberCyclicShiftEncrypted = cyclicShiftEncryption(sourceText, shiftNumber);System.out.println(numberCyclicShiftEncrypted);System.out.println();System.out.println("Decrypted text is ");System.out.println(cyclicShiftDecryption(numberCyclicShiftEncrypted,shiftNumber));break;}}}}

  1. Запускаем:

  1. Вводим текст:

Якобы беседовал с императором. Тот спросил, в чем космическое назначение российской цивилизации.А Соловьев возьми и скажи – это, ваше величество, переработка солнечной энергии в народное горе. За это и посадили.Император, конечно, и сам все знает насчет солнечной энергии, но присутствовали послы, и все попало в заграничные газеты….Факт, что любая неординарная личность, видящая свою цель в чем-то кроме воровства, традиционно воспринимается нашейвластью как источник опасности. И чем неординарней такая личность, тем сильнее власть ее боится.(Виктор Пелевин, "t")

  1. Выбираем 1:

  1. Выбираем 2:

  1. Выбираем 3 и вводим число:
ВыводБыл продемонстрирован весь функционал требуемого приложения и предоставлен исходный код.