noqqe » blog | sammelsurium | photos | projects | about

Seit ich meinen neuen Arbeitsweg antrete und täglich ca eine Stunde im Zug verbringe, höre ich umso mehr Podcasts. Besonders gut finde ich http://ulm.ccc.de/dev/radio/. Es ging unter anderem um Algorithmen und Kryptologie im Allgemeinen. Unter anderem eben auch die ROT13 Verschlüsselung.

Ich habe mir überlegt wie schwierig es wohl sein kann, diesen in Bash zu implementieren. Nach kurzem googlen findet man immer wieder eine kleine wirklich ausgefuchste, trickreiche Zeile:

tr A-Za-z N-ZA-Mn-za-m

Irgendwie war mir das aber zu langweilig, mir die Arbeit von einem vorgefertigten Binary erledigen zu lassen. Ich wollte es in echtem Bash selbst schreiben. Was ich dann auch getan habe.

Usage:

$ ./rot13 "hello world"
uryyb jbeyq
$ echo "hello world" | ./rot13
uryyb jbeyq
# Verschlüsseln und entschlüsseln hintereinander.
$ echo "hello world" | ./rot13 | ./rot13
hello world
# Zeichentabelle anzeigen
$ ./rot13 -t

Sollten Zeichen vorkommen, die sicht nicht im Table befinden, werden diese automatisch erkannt und bleiben unverschlüsselt.

$ ./rot13 "Ich wollte nur [...] und dann ist das Universum explodiert."
Ipu jbyygr ahe [...] haq qnaa vfg qnf Uavirefhz rkcybqvreg.

Genau genommen ist es sogar mehr als nur ROT13. Mit wachsendem Zeichen-Table wächst auch automatisch die Verschiebung der Stellen mit. Es ist also möglich einen eigens definierten Table mit Zeichen anzulegen und diesen zu nutzen. Einzige Bedingung: Es muss eine gerade Anzahl von Zeichen sein.

Das Skript ist auf Github zu finden.

Comments (6)

Hesmon on 2011-08-13T20:30:46
Kürzer: http://www.commandlinefu.com/commands/view/1792/rot13-using-the-tr-command

noqqe on 2011-08-13T20:45:12
Schade, dass du den Post nichtmal gelesen hast.

Frank on 2011-08-14T02:22:50
Wo kann ich das downloaden was du gebastelt hast?

noqqe on 2011-08-14T15:48:54
In dem eingebundenen JavaScript von Github gibts einen Knopf mit "View raw" Hier ist der Link: https://gist.github.com/raw/1143762/a88606a269ed45945b2dead9424886a04ef9fe6b/rot13.bash

cp on 2011-08-15T04:39:34
Rot13 ist zwar schön einfach, aber man kann natürlich sehr leicht den Klartext wiederherstellen. Die Vigenère-Chiffre dagegen ist ohne Wissen um den Schlüssel "von Hand" nicht leicht entschlüsselbar, aber nicht wirklich kompliziert anzuwenden. Für mich also als Tipp an dich für weitere Spielerein :)

noqqe on 2011-08-16T18:59:06
@cp: danke für den Tipp! Schau ich mir mal an :) aber sieht härter aus. Um einiges ;)