Привет! Я решил создать программу на Java, которая применяет Шифр Цезаря для зашифровки текста. Хочу поделиться с вами своим опытом и показать, как это можно сделать.Для начала, необходимо задать кодовую таблицу символов, которую будем использовать. В моей программе я использовал латинский алфавит в нижнем регистре (от ‘a’ до ‘z’) и символы пробела и точки. Теперь давайте приступим к написанию программы.java
import java.util.Scanner;
public class CaesarCipher {
public static void main(String[] args) {
Scanner scanner new Scanner(System.in);
System.out;println(″Введите текст для шифрования⁚″);
String text scanner.nextLine;
System.out.println(″Введите ключ⁚″);
int key scanner.nextInt;
String encryptedText encrypt(text, key);
System.out.println(″Текст после преобразования⁚ ″ encryptedText);
System.out.println(″Выполнить обратное преобразование? (y/n)»);
String choice scanner.next;
if (choice.equalsIgnoreCase(″y″)) {
String decryptedText decrypt(encryptedText, key);
System.out.println(″Текст после обратного преобразования⁚ ″ decryptedText);
} else {
System.out.println(″До свидания!″);
}
}
public static String encrypt(String text, int key) {
String encryptedText ″″;
for (int i 0; i < text.length; i ) {
char c text.charAt(i);
if (c > ‘a’ nn c < 'z') {
c (char) ((c ⎼ ‘a’ key) % 26 ‘a’);
} else if (c ‘ ‘) {
c ‘.’;
}
encryptedText c;
}
return encryptedText;
}
public static String decrypt(String text, int key) {
String decryptedText ″″;
for (int i 0; i < text.length; i ) {
char c text.charAt(i);
if (c > ‘a’ nn c < 'z') {
c (char) ((c ⏤ 'a' ⏤ key 26) % 26 'a');
} else if (c '.') {
c ' ';
}
decryptedText c;
}
return decryptedText;
}
}
В этой программе я использовал функцию `encrypt`, которая принимает входной текст и ключ шифрования. Она проходит по каждому символу в тексте и сдвигает его на `key` позиций вперед по алфавиту. Если символ является пробелом, мы заменяем его на точку, чтобы иметь возможность восстановить пробелы при выполнении обратного преобразования.
Функция `decrypt` работает точно так же, только сдвигает символы назад на `key` позиций по алфавиту и восстанавливает пробелы из точек.
После запуска программы, она запросит ввод текста для шифрования и ключа. Затем будет выведена преобразованная строка. Программа также спросит пользователя, хочет ли он выполнить обратное преобразование. Если пользователь ответит 'y', программа выполнит дешифровку, иначе просто выведет ″До свидания!″.
Надеюсь, мой опыт будет полезен для вас! Удачи в изучении шифрования и программирования на Java!