Cäsar-Verschlüsselung in Plain Old C
Julius Caesar verschlüsselte seine militärische Korrespondenz, indem er jeden Buchstaben des Alphabets um 3 Buchstaben verschob. Aus A wird D, aus B wird E, ... Diese Verschlüsselung ist natürlich nicht sehr sicher und über eine Häufigkeitsanalyse leicht zu knacken.
Im Rahmen der Technikerschule bekamen wir als Projekt, eine Kommandozeilen-Version eines Cäsar-Verschlüsselungs-Programmes zu bauen. Die Aufgabe musste in Zweier-Teams erledigt werden. Das hier ist unsere Lösung. Es werden folgende Funktionen unterstützt: Verschlüsseln, Entschlüsseln, Ein- und Ausgabe über stdin / stdout oder Dateien, Knacken des Schlüssels über eine Häufigkeitsanalyse.
Benutzungs-Beispiel:
Kompilieren des Sourcecodes
chrissie@balearen ~/my_c $ gcc caesar.c
Anwendung: Verschlüsseln
chrissie@balearen ~/my_c $ echo "Das ist ein streng geheimer Text, \
den niemand wissen darf. Deshalb wird er \
auch verschlüsselt" | ./a.out -e -o enc.txt -c 13
chrissie@balearen ~/my_c $ cat enc.txt
QNFVF GRVAF GERAT TRURV ZREGR
KG,QR AAVRZ NAQJV FFRAQ NES.Q
RFUNY OJVEQ RENHP UIREF PUYü
FFRYG
Andwendung: Entschlüsseln mit bekanntem Schlüssel
chrissie@balearen ~/my_c $ ./a.out -d -i enc.txt -c 13
The decrypted message is:
DASISTEINSTRENGGEHEIMERTEXT,DENNIEMANDWISSENDARF.DESHALBWIRDERAUCHVERSCHLüSSELT
Die Verschlüsselung mit einer Häufigkeitsanalyse knacken:
Annahme in diesem Fall: E ist der häufigste Buchstabe. Das kann dann variiert werden,
für deutsch ist E, S, H, C o. ä. der Reihe nach empfohlen.
chrissie@balearen ~/my_c $ ./a.out -f E -i enc.txt
The frequency-analyzed message is:
DASISTEINSTRENGGEHEIMERTEXT,DENNIEMANDWISSENDARF.DESHALBWIRDERAUCHVERSCHLüSSELT
Hilfe:
chrissie@balearen:~/my_c$ ./a.out -h
simple caesar code implementation
-i FILENAME infile
-o FILENAME outfile (optional, use stdout if nothing given)
-d decrypt
-e encrypt
-c 13 code for enc / dec (value 0 ... 25, optional, default 13 if no -c)
-f E decrypt using frequency analysis if key is lost
(try e, n, i, r, s, h, c for german)
-h print this help
Examples:
caesar -i test.txt -o secret.txt -e -c 8
caesar -f E -i secret.txt
caesar -h
Der Source-Code im Anhang zum Herunterladen (new BSD license).
Dateien: