In diesem Tutorial werden wir eine der Verschlüsselungsmethoden namens Caesar Cipher untersuchen. Es ist ein Teil der Kryptographie.
Einführung
Bei dieser Technik wird jedes Zeichen durch einen Buchstaben an einer bestimmten festen Zahlposition ersetzt, die später oder vor dem Alphabet steht. Beispiel: Das Alphabet B wird durch zwei Positionen tiefer D ersetzt. D würde zu F und so weiter. Diese Methode ist nach der beliebten Reibungsfigur Julius Cäsar benannt, die sie zur Kommunikation mit Beamten nutzte.
Für die Umsetzung gibt es einen Algorithmus. Lassen Sie uns Folgendes verstehen.
Merkmal des Caesar-Chiffrieralgorithmus
Dieser Algorithmus besteht aus einigen Merkmalen, die im Folgenden aufgeführt sind.
- Mit dieser Technik lässt sich die Verschlüsselung recht einfach anwenden.
- Jeder Text wird durch die feste Nummer der Position nach unten oder oben durch das Alphabet ersetzt.
- Es handelt sich um eine einfache Art Ersatzchiffre.
Es ist ein ganzzahliger Wert erforderlich, um jeden Text zu definieren, der nach unten verschoben wurde. Dieser ganzzahlige Wert wird auch als Verschiebung bezeichnet.
Schlaf in Javascript
Wir können dieses Konzept mithilfe der modularen Arithmetik darstellen, indem wir zunächst den Buchstaben gemäß dem Schema in Zahlen umwandeln: A = 0, B = 1, C = 2, D = 3…….. Z = 25.
Die folgende mathematische Formel kann verwendet werden, um n Buchstaben zu verschieben.
Wie entschlüsseln?
Die Entschlüsselung entspricht der Verschlüsselung. Wir können eine Funktion erstellen, die einen Wechsel in die entgegengesetzte Richtung durchführt, um den Originaltext zu entschlüsseln. Wir können jedoch die zyklische Eigenschaft der Chiffre unter dem Modul verwenden.
Chiffre(n) = Entschlüsselung(26-n)
schwebend in CSS
Die gleiche Funktion kann zur Entschlüsselung verwendet werden. Stattdessen ändern wir den Verschiebungswert so, dass Verschiebungen = sind 26 - Schicht.
Lassen Sie uns das folgende Beispiel verstehen:
Beispiel -
def encypt_func(txt, s): result = '' # transverse the plain txt for i in range(len(txt)): char = txt[i] # encypt_func uppercase characters in plain txt if (char.isupper()): result += chr((ord(char) + s - 64) % 26 + 65) # encypt_func lowercase characters in plain txt else: result += chr((ord(char) + s - 96) % 26 + 97) return result # check the above function txt = 'CEASER CIPHER EXAMPLE' s = 4 print('Plain txt : ' + txt) print('Shift pattern : ' + str(s)) print('Cipher: ' + encypt_func(txt, s))
Ausgabe:
Plain txt : CEASER CIPHER EXAMPLE Shift pattern : 4 Cipher: HJFXJWsHNUMJWsJCFRUQJ
Der obige Code hat die Zeichen nacheinander durchlaufen. Es überträgt jedes Zeichen gemäß der Regel, abhängig vom Verfahren der Ver- und Entschlüsselung des Textes.
Wir haben einige spezifische Positionssätze definiert, die einen Chiffretext generierten.
Äquivalenzgesetze
Verstoß gegen den Caesar-Chiffrieralgorithmus
Wir können den Chiffriertext auf verschiedene Arten hacken. Eine Möglichkeit ist Brute-Force-Technik, Dazu gehört das Ausprobieren aller möglichen Entschlüsselungsschlüssel. Diese Technik ist nicht so schwer und erfordert keinen großen Aufwand.
Lassen Sie uns das folgende Beispiel verstehen.
Beispiel -
msg = 'rGMTLIVrHIQSGIEWIVGIEWIV' #encrypted msg LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' for k in range(len(LETTERS)): transformation = '' for s in msg: if s in LETTERS: n = LETTERS.find(s) n = n - k if n <0: n="n" + len(letters) transformation="transformation" letters[n] else: s print('hacking k #%s: %s' % (k, transformation)) < pre> <p> <strong>Output:</strong> </p> <pre> Hacking k #25: rHNUMJWrIJRTHJFXJWHJFXJW </pre> <h2>Transposition Cipher</h2> <p>Transposition cipher algorithm is a technique where the alphabet order in the plaintext is rearranged to form a cipher text. This algorithm doesn't support the actual plain text alphabets.</p> <p>Let's understand this algorithm using an example.</p> <p> <strong>Example -</strong> </p> <p>We will take the simple example called columnar transposition cipher where we write the each character in the pain text in horizontal with specified alphabet width. The vertically written texts are cipher, which create a completely unlike cipher text.</p> <p>Let's take a plain text, and apply the simple columnar transposition technique as shown below.</p> <img src="//techcodeview.com/img/python-tutorial/89/caesar-cipher-python-2.webp" alt="Caesar Cipher in Python"> <p>We placed the plain text horizontally and the cipher text is created with vertical format as: <strong>hotnejpt.lao.lvi.</strong> To decrypt this, the receiver must use the same table to decrypt the cipher text to plain text.</p> <p> <strong>Code -</strong> </p> <p>Let's understand the following example.</p> <pre> def split_len(sequence, length): return [sequence[i:i + length] for i in range(0, len(sequence), length)] def encode(k, plaintxt): order = { int(val): n for n, val in enumerate(k) } ciphertext = '' for index in sorted(order.ks()): for part in split_len(plaintxt, len(k)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode('3214', 'HELLO')) </pre> <p> <strong>Explanation -</strong> </p> <p>In the above code, we have created a function named <strong>split_len(),</strong> which spitted the pain text character, placed in columnar or row format.</p> <p>The <strong>encode()</strong> method created the cipher text with a key specifying the number of columns, and we have printed each cipher text by reading through each column.</p> <h4>Note - The transposition technique is meant to be a significant improvement in crypto security. Cryptanalyst observed that re-encrypting the cipher text using same transposition cipher shows better security.</h4> <hr></0:>
Transpositions-Chiffre
Der Transpositionsverschlüsselungsalgorithmus ist eine Technik, bei der die alphabetische Reihenfolge im Klartext neu angeordnet wird, um einen Chiffretext zu bilden. Dieser Algorithmus unterstützt nicht die eigentlichen Klartext-Alphabete.
if-else-Anweisung Java
Lassen Sie uns diesen Algorithmus anhand eines Beispiels verstehen.
Beispiel -
Wir nehmen das einfache Beispiel namens Columnar Transposition Chiffre, bei dem wir jedes Zeichen im Schmerztext horizontal mit der angegebenen Alphabetbreite schreiben. Bei den vertikal geschriebenen Texten handelt es sich um Chiffren, die einen völlig unterschiedlichen Chiffretext erzeugen.
Nehmen wir einen einfachen Text und wenden wir die einfache Technik der Spaltentransposition an, wie unten gezeigt.
Wir haben den Klartext horizontal platziert und der Chiffretext wird im vertikalen Format wie folgt erstellt: hotnejpt.lao.lvi. Um dies zu entschlüsseln, muss der Empfänger dieselbe Tabelle verwenden, um den Chiffriertext in Klartext zu entschlüsseln.
Code -
Diana Ankudinova
Lassen Sie uns das folgende Beispiel verstehen.
def split_len(sequence, length): return [sequence[i:i + length] for i in range(0, len(sequence), length)] def encode(k, plaintxt): order = { int(val): n for n, val in enumerate(k) } ciphertext = '' for index in sorted(order.ks()): for part in split_len(plaintxt, len(k)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode('3214', 'HELLO'))
Erläuterung -
Im obigen Code haben wir eine Funktion mit dem Namen erstellt split_len(), die das schmerzhafte Textzeichen ausspuckte, platziert im Spalten- oder Zeilenformat.
Der kodieren() Die Methode hat den Chiffriertext mit einem Schlüssel erstellt, der die Anzahl der Spalten angibt, und wir haben jeden Chiffriertext gedruckt, indem wir jede Spalte durchgelesen haben.
Hinweis – Die Transpositionstechnik soll eine deutliche Verbesserung der Kryptosicherheit bedeuten. Kryptoanalytiker stellten fest, dass die Neuverschlüsselung des Chiffriertextes unter Verwendung derselben Transpositionschiffre eine bessere Sicherheit bietet.
0:>