Die Caesar-Chiffre wurde nach Julius Caesar (100 v. Chr. – 44 v. Chr.) benannt, der sie für die geheime militärische Kommunikation verwendete. Die Caesar-Chiffre ist eine Substitutions-Chiffre. Julius Cäsar nutzte ursprünglich eine Dreierverschiebung zum Ver- und Entschlüsseln von Nachrichten. Die Verschlüsselung erfolgt über eine affine Funktion: f(x)=x+b.
Zunächst wird jedes Zeichen des Ausgangstextes (zu verschlüsselnde Nachricht) in eine Zahl von 0 bis 25 umgewandelt, entsprechend seiner Position im lateinischen Alphabet, das 26 Buchstaben enthält -> (a = 0, b = 1 ... z = 25 ).
Anschließend wird jede erhaltene Zahl durch eine affine Funktion transformiert (f(x) = 1x + b). „x“ stellt die Zahl dar, während „b“ während der Verschlüsselung definiert wird. „b“ ist der Schlüssel, der zum Entschlüsseln der endgültigen Nachricht verwendet wird.
Wenn wir alle Bilder nehmen und in einer Liste zusammenfassen, erhalten wir n Zahlen, die n Zeichen des Ausgangstextes entsprechen. Der nächste Schritt besteht darin, die Werte von Modulo 26 für jede Zahl zu ermitteln. ( Modulo bedeutet Rest )
Beispiel: Modulo 4 von 19 ist 3 , weil
19 = 4 * 4 + 3
Andererseits ist Modulo 26 von 26 0 , weil26 = 26 * 1 + 0
Daher erhalten wir eine neue Liste mit n Elementen, jeweils zwischen 0 und 25, beide enthalten. Alle diese Zahlen werden mithilfe der folgenden Tabellen in Buchstaben des lateinischen Alphabets umgewandelt.
Schließlich erstellen wir die endgültige Nachricht, indem wir alle Buchstaben nebeneinander platzieren.
Die Schritte 1 und 4 können mit diesen Tabellen durchgeführt werden:
A | B | C | D | E | F | G | H | ICH | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
Wenn ein Angreifer weiß, dass die Nachricht mit Caesar Cipher verschlüsselt wurde, kann er alle Schichten (b-Werte von 1 bis 25) ausprobieren, um die Nachricht zu entschlüsseln. Dies wird als Bruteforce-Methode bezeichnet.
Wir können auch die Häufigkeitsanalyse verwenden, um die Nachricht zu entschlüsseln, da jeder Buchstabe mit demselben Algorithmus verschlüsselt wird und die häufigsten Buchstaben im Englischen sind:
Unter Verwendung der obigen Tabellen kann ATTACK wie folgt geschrieben werden: 25 0 19 19 0 2 10 25 Bilder jeder Zahl:
Die neue Liste lautet: 29 4 23 23 4 6 14 29
Mit der Modulo-26-Methode erhalten wir:
Die endgültige Nachricht ist 3 4 23 23 4 6 14 3 und mithilfe der Tabellen konvertieren wir sie erneut in die verschlüsselte Nachricht:
DEXXEGOD
ZATTACKZ wird mit der Funktion x + 4 verschlüsselt und wird zu DEXXEGOD .
Unter Verwendung der obigen Tabellen kann DEXXEGOD wie folgt geschrieben werden: 3 4 23 23 4 6 14 3 Bilder jeder Zahl:
Die neue Liste lautet: -1 0 19 19 0 2 10 -1
Mit der Modulo-26-Methode erhalten wir:
Die endgültige Nachricht ist 25 0 19 19 0 2 10 25 und mithilfe der Tabellen konvertieren wir sie erneut in die verschlüsselte Nachricht:
ZATTACKZ
DEXXEGOD wird mit der Funktion 1x - 4 entschlüsselt und wird zu ZATTACKZ .
Dies wird als Bruteforce-Methode bezeichnet.
Mit den obigen Tabellen kann DEXXEGOD wie folgt geschrieben werden: 3 4 23 23 4 6 14 3
a ist eine Zahl zwischen 0 und 25. (a = 0 würde bedeuten, dass die Nachricht bereits entschlüsselt ist)
Mit der Funktion f(x) = Mod(1x + a, 26) :
Wir können alle diese Ergebnisse erhalten:
A | Entschlüsselter Text |
---|---|
1 | fgzzgiqf |
2 | ghaahjrg |
3 | Hibbiksh |
4 | ijccjlti |
5 | jkddkmuj |
6 | kleelnvk |
7 | lmffmowl |
8 | mnggnpxm |
9 | nohhoqyn |
10 | Opiiprzo |
11 | pqjjqsap |
12 | qrkkrtbq |
13 | rsllsucr |
14 | stmmtvds |
15 | tunnuwet |
16 | uvoovxfu |
17 | vwppwygv |
18 | wxqqxzhw |
19 | xyrryaix |
20 | yzsszbjy |
21 | zattackz |
22 | abuubdla |
23 | bcvvcemb |
24 | cdwwdfnc |
25 | dexxegod |
Der einzige sinnvolle Text ist zattackz, sodass wir daraus schließen können, dass der Schlüssel 21 (25 - b = 21) ist.
DEXXEGOD wird mit der Funktion f(x) = 1x - 4 oder f(x) = 1x + 21 entschlüsselt und wird zu ZATTACKZ .
Sprache | Verschlüsseln | Entschlüsseln |
---|---|---|
C | caesar.c | Demnächst verfügbar |
C# | Caesar.cs | Demnächst verfügbar |
C++ | main.cpp | main.cpp |
JavaScript | encrypt.js | decrypt.js |
Python | verschlüsseln.py | decrypt.py |
Schnell | lib.swift | lib.swift |
npm i @cryptoolsorg/caesarcipher