Ich versuche derzeit, eine Substitution Verschlüsselung/Entschlüsselungsprogramm zu machen. Dieses Programm liest aus einer Datei und verschlüsselt Zeichen für Zeichen basierend auf einem vom Benutzer angegebenen Schlüssel. Wenn die Datei beispielsweise "ATTACK AT DAWN" lautet und der Schlüssel "LEMON" lautet, lautet der resultierende Chiffretext "LXFOPV EF RNHR".Substitution Verschlüsselung nicht zurück Zeichen
Ich habe eine Funktion für die Verschlüsselung gemacht, ändert jedoch die Werte in andere Zeichen als alphanumerische Buchstaben. Jede Hilfe wäre willkommen. Ich habe die Funktion unten eingefügt:
void encrypt(ifstream& in_s, ofstream& out_s, char next, char& cypher, int& i, char key[])
{
in_s.get(next); // get character from file
while (!in_s.eof())
{
check_i(i); // check i value is within the constraint for key[4]
if(isupper(next)) // if uppercase run cypher
{
cypher = ((next - 65) + (key[i] - 65) % 26) + 65;
}
else if (islower(next))
{
next = toupper(next); // change to upper
cypher = ((next - 65) + (key[i] - 65) % 26) + 65;
cypher = tolower(cypher); // change to lower
}
else // if blank do nothing
{
cypher = next;
}
cout << cypher;
in_s.get(next); // get next char
i++; // add 1 to i for key[i]
}
}
Ah ich sehe! Danke für die Eingabe. Ich habe das behoben, aber die "verschlüsselten" Zeichen sind immer noch nicht alle alphanumerisch. Ich denke, es könnte etwas mit meiner Schlüsselfunktion nicht stimmen. –
Es ist schwer zu kommentieren, weil Sie nie die _actual_ Ausgabe Ihres Programms gezeigt haben und Sie die Definition der 'check_i' Funktion nicht gezeigt haben. – paddy