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

ЛАБЫ / Кросс-платформенное ОТЧЕТ

.doc
Скачиваний:
7
Добавлен:
13.06.2024
Размер:
262.14 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

Факультет информационных систем и технологий

Кафедра безопасности информационных систем

ОТЧЕТ

по практической работе №2

по дисциплине «Кросс-платформенное программирование»,

по теме: «Разработка Java-приложения с использованием простых типов данных и символьных строк.»

Выполнили студенты группы ИСТ-222:

ФИО: Шумов Владислав

ФИО: Черномашенцев Богдан

Принял:

Бородянский Ю. М.

(подпись)

Цель работы:

Получение практических навыков использования простых типов данных, логических операций и символьных строк в Java-программах на примере выполнения процедур шифрования информации.

Теоретическая часть:

next(): считывает введенную строку до первого пробела;

nextLine(): считывает всю введенную строку;

nextInt(): считывает введенное число int;

nextDouble(): считывает введенное число double;

hasNext(): проверяет, было ли введено слово;

hasNextInt(): проверяет, было ли введено число int;

hasNextDouble(): проверяет, было ли введено double.

Ход работы:

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); boolean exitProgram = false; // флаг для выхода из программы while (!exitProgram) { // меню выбора метода шифрования System.out.println("Выберите метод шифрования:"); System.out.println("1. Шифрование методом замены"); System.out.println("2. Побитовое шифрование"); System.out.println("3. Выход из программы"); // добавлен пункт выхода из программы System.out.print("Ваш выбор: "); int choice = scanner.nextInt(); // выбор метода шифрования switch (choice) { case 1: sdvig(); break; case 2: XOR(); break; case 3: exitProgram = true; // установка флага для выхода из программы System.out.println("Выход из программы..."); break; default: System.out.println("Некорректный выбор. Пожалуйста, выберите от 1 до 3."); } } scanner.close(); // закрытие Scanner после завершения работы программы } // метод шифрования сдвигом public static void sdvig() { Scanner scanner = new Scanner(System.in); // запрос ввода текста System.out.print("Введите текст для шифрования: "); String text = scanner.nextLine(); // запрос ввода величины System.out.print("Введите величину сдвига: "); int shift = scanner.nextInt(); scanner.nextLine(); // потребляем символ новой строки StringBuilder encryptedText = new StringBuilder(); // шифрование for (int i = 0; i < text.length(); i++) { char originalChar = text.charAt(i); if (Character.isLetter(originalChar)) { // проверка на букву int originalCharCode = originalChar - (Character.isUpperCase(originalChar) ? 'А' : 'а'); int shiftedCharCode = (originalCharCode + shift) % 32; char encryptedChar = (char) (shiftedCharCode + (Character.isUpperCase(originalChar) ? 'А' : 'а')); encryptedText.append(encryptedChar); } else { encryptedText.append(originalChar); } } // вывод зашифрованного текста System.out.println("Зашифрованный текст: " + encryptedText.toString()); } public static void XOR() { Scanner scanner = new Scanner(System.in); // чтение ввода с клавиатуры System.out.println("Введите текст для шифрования:"); String text = scanner.nextLine(); System.out.println("Введите ключ:"); String key = scanner.nextLine(); String encryptedText = encrypt(text, key); // шифрование текста с использованием ключа System.out.println("Зашифрованный текст: " + encryptedText); String decryptedText = decrypt(encryptedText, key); // расшифрование текста с использованием ключа System.out.println("Расшифрованный текст: " + decryptedText); // вывод расшифрованного текста } public static String encrypt(String text, String key) { StringBuilder sb = new StringBuilder(); // создание объекта StringBuilder для построения зашифрованной строки int keyIndex = 0; // инициализация индекса ключа // цикл по каждому символу в тексте for (int i = 0; i < text.length(); i++) { char c = text.charAt(i); // получение символа текста char k = key.charAt(keyIndex); // получение текущего символа ключа sb.append((char) (c ^ k)); // XOR операция между символом текста и символом ключа, добавление результата в StringBuilder keyIndex = (keyIndex + 1) % key.length(); // переход к следующему символу ключа, с учетом его длины } return sb.toString(); // возврат зашифрованной строки } public static String decrypt(String text, String key) { return encrypt(text, key); // декодирование зашифрованной строки эквивалентно повторному шифрованию с тем же ключом } }

Результат работы программы:

Вывод: Изучили основы работы Java

Изучили методы шифрования

Сделали своё приложение с использованием простых типов данных и символьных строк

5

Соседние файлы в папке ЛАБЫ