Для моего класса CPSC мне нужно сделать код шифрования, используя цезарский шифр. Это сделано. Следующая часть принимает зашифрованное сообщение и циклически добавляет секретный ключ к зашифрованному сообщению. Например, если я шифрую «Привет!» используя сдвиг 13, он превратится в «Урыбы!». Затем я должен сдвинуть «U» на один, «r» на три, «y» на один и т. Д., Который войдет в «Vuzbc!». Я нахожусь в классе новичков, поэтому не знаю всех крутых советов и трюков. Единственное возможное решение, которое я знаю, - это взять результат цезарного шифра и как-то проиндексировать секретный ключ, который будет добавлен к результату.Что лучше всего подходит для шифрования шифрования?
Вот мой код, который я до сих пор:
public class Cipher {
private int secretKey;
private int superSecretKey;
public static void main(String [] args)
{
Cipher cipher = new Cipher(1);
}
public Cipher(int myKey) {
secretKey = myKey;
}
public String caesarEncrpyt (String s) {
String r = "";
for(int i = 0; i < s.length(); i++) {
char c = (char) (s.charAt(i));
if(Character.isLetter(c)) {
if (Character.isUpperCase(c)) {
r += (char) ('A' + (c - 'A' + secretKey) % 26);
}
else {
r += (char) ('a' + (c - 'a' + secretKey) % 26);
}
}
else {
r += c;
}
}
return r;
}
public String caesarDecrypt (String s) {
String r = "";
for(int i = 0; i < s.length(); i++) {
char c = (char) (s.charAt(i));
if(Character.isLetter(c)) {
if (Character.isUpperCase(c)) {
r += (char) ('A' + (c - 'A' - secretKey) % 26);
}
else {
r += (char) ('a' + (c - 'a' - secretKey) % 26);
}
}
else {
r += c;
}
}
return r;
}
public String augustusEncrypt (String s) {
String r = "";
for(int i = 0; i < s.length(); i++) {
char c = (char) (s.charAt(i));
if(Character.isLetter(c)) {
if (Character.isUpperCase(c)) {
r += (char) ('A' + (c - 'A' + secretKey) % 26);
}
else {
r += (char) ('a' + (c - 'a' + secretKey) % 26);
}
}
else {
r += c;
}
}
return r;
}
augustusEncrypt является копирование и вставка из caesarEncrypt. Я собирал кое-что, надеясь на решение. Заранее спасибо!
Редактировать: Возможно, я не объяснил это правильно, если у вас есть вопрос, я буду здесь.
В общем, шифровании зашифрованного текста является плохой практикой. Это вряд ли сделает что-то более безопасным, и в зависимости от используемых систем может на самом деле сделать вещи слабее. (очевидно, это не проблема в этом конкретном случае, хотя, очевидно, нет ничего более безопасного в этом двойном шифровании) –
Когда вы говорите «циклический секретный ключ», вы имеете в виду, что, поскольку ключ был 13, вы собираетесь превратить это в {1, 3}, и если ключ был 482213, цикл будет {4,8,2,2,1,3}? –
Трудно объяснить. Если бы мне было секретно, мне было 13, и мне пришлось вращать «Привет!». Я бы добавил 1 к H, затем 3 к e. Затем вернитесь к 1, чтобы добавить к L. –