Ich habe eine Textdatei, die ich schon mit shifting verschlüsselt habe, aber ich muss den verschlüsselten Text wieder verschlüsseln, aber dieses Mal mit vigenere Chiffre. Ich muss dann den verschlüsselten Text entschlüsseln (zuerst vigenere, dann verschieben), aber alle Groß- und Kleinbuchstaben müssen gleich bleiben, ebenso wie die schwarzen Leerzeichen, Anführungszeichen, Kommata und Punkte. Ich habe bereits die Verschiebung Verschlüsselung und Entschlüsselung abgeschlossen, alles, was übrig bleibt, ist der Vigenere. Unten ist meine Klasse zum Verschlüsseln von Vigenere gezeigt, ich habe die Entschlüsselung noch nicht geschrieben, weil ich im Verschlüsselungsschritt feststeckte. Danke.Versucht, eine vigenere Chiffre zu verschlüsseln und zu entschlüsseln
public static String vigenereEncryption(String str,String keyword)
{
char [] c_arr = null;
int g =0;
int keyLength = keyword.length();
String encrypted = "";
String update ="";
String []list = null;
for(int k = 0; k<keyword.length();k++){
char key = keyword.charAt(k);
c_arr = keyword.toCharArray();
update = update + key;
}
for(int i=0;i<str.length();i++)
{
//stores ascii value of character in the string at index 'i'
int c=str.charAt(i);
//encryption logic for uppercase letters
if(Character.isUpperCase(c))
{
for(int k = 0; k<keyword.length();k++){
g = c_arr[k] ;
}
c=(c+g)%26;
//if c value exceeds the ascii value of 'Z' reduce it by subtracting 26(no.of alphabets) to keep in boundaries of ascii values of 'A' and 'Z'
if(c>'Z')
c=c-26;
}
//encryption logic for lowercase letters
else if(Character.isLowerCase(c))
{
c=(c+g)%26;
//if c value exceeds the ascii value of 'z' reduce it by subtracting 26(no.of alphabets) to keep in boundaries of ascii values of 'a' and 'z'
if(c>'z')
c=c-26;
}
//concatinate the encrypted characters/strings
encrypted=encrypted+(char) c;
}
return encrypted;}}//end of public class`