Der Atbasch-Chiffre entstand unter den Kopisten der Bücher des Alten Testamentes. In moderner Terminologie handelt es sich bei diesem Verschiebechiffre um einen sehr einfachen monographischen/monoalphabetischen Substitutionschiffre, d.h. jedes Zeichen wird durch exakt ein anderes Zeichen ersetzt. Aus diesem Grunde eignet er sich auch nicht wirklich zu Verschlüsselung von Botschaften (bspw. bleibt die charakteristische Häufigkeitsverteilung von Zeichen erhalten), sondern schützt eher vor unbeabsichtigem Lesen, so wie bei der Verwendung von Rot-13 (Rotation um 13 Zeichen) im Usenet. Analog dazu, könnte man den Atbasch-Code bei Anwendung auf das lateinische Alphabet auch als Rot-26 bezeichnen.
Bei der Kodierung im Atbasch-Chiffre wird hierzu einfach das Alphabet umgedreht, das erste Zeichen wird durch das Letzte, das Zweite durch das Vorletzte usw. ersetzt. Der Name Atbasch leitet sich von den ersten beiden (Aleph & Beth) und letzten beiden (Taw & Shin) Zeichen des 22-buchstabigen hebräischen Alphabets ab. Trotz seiner hebräischen Herkunft, läßt sich der Atbasch-Chiffre umstandslos auf alle anderen Alphabete übertragen.
Auch wenn der Atbasch-Chiffre im Alten Testament, der Bibel, vorkommt handelt es sich nicht um den Bibelcode. Beide Dinge haben nichts miteinander gemein.
Klartext | : | K | |
Verschlüsselter Text | : | V | |
Kodierung | |||
1 | V | = | Atbasch(K) |
Dekodierung | |||
2 | K | = | Atbasch(V) |
3 (1 in 2) | K | = | Atbasch(Atbasch(K)) |
Die zweimalige Anwendung derselben Funktion liefert wieder den Ausgangstext (involutorische Verschlüsselung
). Diese Eigenschaft weist ebenfalls die von UNIX-Systemen kommende und im Usenet verbreitete Verschlüssung Rot-13 auf.
Die Dekodierung erfolgt durch erneute Anwendung derselben Methode.
Kodierung und Dekodierung lassen sich auch ohne Rechenarbeit an Hand einer einfachen Tabelle durchführen. Das zu bearbeitende Zeichen in der Tabelle suchen und das Ergebnis in der anderen Zeile ablesen:
A | B | C | D | E | F | G | H | I | J | K | L | M |
Z | Y | X | W | V | U | T | S | R | Q | P | O | N |
Text | M | a | r | i | a | J | u | a | n | a | k | o | m | m | t | n | a | c | h | t | s | ! | |||
Position | 12 | 0 | 17 | 8 | 0 | 9 | 20 | 0 | 13 | 0 | 10 | 14 | 12 | 12 | 19 | 13 | 0 | 2 | 7 | 19 | 18 | ! | |||
Differenz zu 26-1 | 13 | 25 | 8 | 17 | 25 | 16 | 5 | 25 | 12 | 25 | 15 | 11 | 13 | 13 | 6 | 12 | 25 | 23 | 18 | 6 | 7 | ! | |||
Nzirz Qfzmz plnng mzxsgh! |
Obwohl schon mehrere Jahrtausende bekannt, wurde die Atbasch-Kodierung in neuerer Zeit durch den Kriminalroman Sakrileg
(engl. Originaltitel The Da Vinci Code
) [1, 2] (Kap. 72 & 77), der im religiösen Milieu spielt und mit dem sich der Autor bei religiös-konservativen und religiös-faschistoiden Kreisen äußerst unbeliebt gemacht hat [3, 4, 5], ins Blickfeld einer weiteren Öffentlichkeit gerückt. Wer sich für die wahren Hintergründe dieses Romans interessiert sollte auch das Kommentartaschenbuch von Dan Burstein lesen. [6]
Das erste Beispiel zeigt eine sehr einfache Variante zur Übersetzung einer Zeichenkette in Atbaschcode.
#!/usr/bin/env python3.2 # -*- coding: utf-8 -*- # def Atbasch (Text, Zeichenraum='ABCDEFGHIJKLMNOPQRSTUVWXYZ'): Chiffre='' l=len(Zeichenraum)-1 for i in range(len(Text)): Chiffre += Zeichenraum[l-Zeichenraum.find(Text[i])] return Chiffre
Obiges Beispiel setzt aber voraus, das der Text ausschließlich Zeichen aus dem gegebenen Zeichenraum (hier: Großbuchstaben) enthält. Mit etwas mehr Aufand, wird die Groß- und Kleinschreibung berücksichtigt und Zeichen die nicht im Zeichenraum enthalten sind, werden unverändert übernommen.
Im Terminal als Einzeiler entweder als Pipeline (|) oder als here-String:
#:~>echo 'Maria Juana kommt nachts!' | \ tr 'a-zA-Z' 'zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA' Nzirz Qfzmz plnng mzxsgh! #:~>
#:~>tr 'a-zA-Z' 'zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA' <<< \ 'Maria Juana kommt nachts!' Nzirz Qfzmz plnng mzxsgh! #:~>
#!/usr/bin/env python3.2 # -*- coding: utf-8 -*- # def Atbasch (Text, Zeichenraum='ABCDEFGHIJKLMNOPQRSTUVWXYZ'): Chiffre='' l=len(Zeichenraum)-1 for i in Text: p=Zeichenraum.find(i) if p > -1: Chiffre += Zeichenraum[l-p] else: p = Zeichenraum.find(i.swapcase()) if p > -1: Chiffre += Zeichenraum[l-p].swapcase() else: Chiffre += i return Chiffre
#!/usr/bin/env python3.2 # -*- coding: utf-8 -*- # import string def Atbasch (Text): return Text.translate(Text.maketrans(\ 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\ 'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba'))
Sakrileg: die
Grundfesten der Kirche zu erschüttern, Jose Garcia, 18.02.2004.
SakrilegNachkommenschaft, 22.03.2004.
Sakrilegauf
Lest und kauft dieses Buch nicht, 17.03.2005.
Diese Seite wurde vom Besucher am 08.09.2024
um 22:04:59
Uhr von einem Rechner mit der TCP/IP-Adresse 44.220.247.152
mit der Browserkennung CCBot/2.0 (https://commoncrawl.org/faq/)
aus der Domäne (none)
kommend aufgerufen. Als zuletzt besuchte Webseite wurde (none)
übermittelt.
Stand vom 24.04.2011 | GnuPG (PGP) ID: 0xA4A5103F Fingerabdruck: 0E01 902F 3EC7 B119 9492 D196 BEB5 4D5D A4A5 103F | Datenschutzhinweis | © seit 2001, Prüfziffernberechnung.DE |