Zwar schon älter hier aber ich habe auch mal ein kleine, zwar nicht sehr professionelle oder umfangreiche lösung für mich gefunden (C++):
Code:
#include <cstdlib>
#include <iostream>
using namespace std;
void caesar(char cha[], int schlussel); // Mache caesar bekannt
int main()
{
char ch[50] = {'\0'}; // 50x leer
int key = 0;
cout << "*******************************\n";
cout << "* Caesar Schiffre by Cr4ckEye *\n"; // Ausgaben
cout << "*******************************\n\n" << endl;
cout << "Bitte geben Sie einen Text ein: ";
cin.getline(ch, 50); // Max 50 Zeichen mit Whitespace
do
{
cout << "Bitte geben Sie den Schluessel ein: ";
cin >> key;
} while(key<=0 && key>=26); // Key nicht größer als 25
cout << "\nVerschluesselt: ";
caesar(ch, key); // Ver und Entschlüsseln
cin.get(); // Halte Fenster offen
cin.get();
}
void caesar(char cha[], int schlussel)
{
for(int i=0; i<50; ++i) // Verschlüsselung
{
if(cha[i] == '\0') break; // 0 Terminator -> Ende
while(cha[i] == 32) // Whitespace ausgeben
{ cout << " "; ++i; }
cha[i] = toupper(cha[i])+schlussel; // Zu Großbuchstabe und Berechnung
cout << cha[i]; // Ausgabe
}
cout << "\n\nEntschluesselt: "; // Entschlüsselung
for(int j=0; j<50; ++j)
{
if(cha[j] == '\0') break; // 0 Terminator -> Ende
while(cha[j] == 32) // Whitespace ausgeben
{ cout << " "; ++j; }
cha[j] = cha[j]-(schlussel*2); // Konvertrierung und Berechnung (schlussel*2),
// da er vorher ja nocheinmal um den selben Schlüssel verschoben wurde.
cout << cha[j]; // Ausgabe
}
}