Affine-Cipher-Verschlüsselung mit Python

Affine Cipher Verschlusselung Mit Python



Inhaltsthema:

  1. Einführung
  2. Vorausgesetztes Wissen
  3. Affine-Chiffriergleichung
  4. Affine-Cipher-Verschlüsselung mit Python
  5. Konzeptioneller Beweiß
  6. Abschluss
  7. Häufig gestellte Fragen (FAQs)

Die affine Chiffre stellt eine spezielle Art von Substitutions-Chiffre dar und fällt in die Kategorie der monoalphabetischen Chiffren. Im Gegensatz zur bekannteren Caesar-Chiffre, bei der jeder Buchstabe im Klartext um eine feste Anzahl von drei Positionen verschoben wird, verwendet die Affine-Chiffre zwei Schlüssel (a und b). Die Wahl der Schlüssel sollte besondere Überlegungen erfordern.

Vorausgesetztes Wissen

Um das heutige Thema tiefgreifend zu verstehen, müssen Sie die folgenden Konzepte verstehen:







  • Der größte gemeinsame Teiler (GCD) und die Koprimzahl
  • Modulararithmetik

Diese Konzepte werden im vorherigen Artikel mit dem Titel „Affine Cipher Mathematical Approach“ ausführlich erläutert.



Affine-Chiffriergleichung

Beginnen wir mit der Formel für die Affine-Verschlüsselung:



E(x) = (a.x + b) mod m
Ehemalig) Bezeichnet eine Verschlüsselung des x alphabetischen Index
A Ein Indexwert des „speziellen“ ersten Schlüssels
X Ein Indexwert des einfachen Buchstabens
B Ein Indexwert des zweiten Schlüssels (zusätzlicher Verschiebungswert)
mod m Die Modulo-Operationen der Gesamtmenge des Alphabets, die 26 beträgt


Alternativbild und Bildunterschrift : Affine-Chiffriergleichung





Wir wollen zum Beispiel den Klartext „BIMANDO“ mit den Schlüsseln 7 und 13 verschlüsseln. Mithilfe des folgenden Tabellenindex wandeln wir zunächst den Klartext in die entsprechende Nummer um:


Alternativbild und Bildunterschrift : Indexnummerierung



Der Klartext „BIMANDO“ wird in eine Indexnummer zu „1 8 12 0 13 3 14“ umgewandelt.


Alternativbild und Bildunterschrift : Konvertieren Sie einen Klartext in einen Indexnummerierungswert

Dann wenden wir die Gleichungsberechnung an und das Ergebnis wird wie folgt angezeigt:


Alternativbild und Bildunterschrift : Affine Verschlüsselung

Der Klartext „BIMANDO“ wird also mit der Affine-Verschlüsselung mit den Schlüsseln 7 und 13 verschlüsselt, was zu „URTNAIH“ führt.

Affine-Cipher-Verschlüsselung mit Python

Nehmen wir nun an, wir möchten eine vertrauliche Nachricht senden, die eine Reihe von Absätzen enthält. Die Durchführung der affinen Chiffrierverschlüsselung im manuellen Verfahren erfordert viel Aufwand und Zeit und birgt ein hohes Risiko für Fehlberechnungen, oder? Daher benötigen wir ein Programm, das den Affine Cipher-Verschlüsselungsprozess automatisiert. Im Folgenden wird der Schritt-für-Schritt-Prozess zum Erstellen eines Python-Programms beschrieben:

1. Importieren Sie die erforderlichen Bibliotheken
Unser Programm beginnt mit dem Importieren der erforderlichen Module wie argparse, string und os für das Parsen von Befehlszeilenargumenten, String-Operationen bzw. betriebssystembezogenen Funktionen.

importieren argparse
importieren Zeichenfolge
importieren Du

2. Definieren der Alphabetzuordnung
Dann definieren wir das Alphabet als eine Folge englischer Kleinbuchstaben. Dies wird später für die Zuordnung der Zeichen während des Verschlüsselungsprozesses verwendet.

Alphabet = Zeichenfolge . ascii_lowercase

3. Affine-Cipher-Verschlüsselungsfunktion
Dies ist die Kernfunktion unseres Programms. Es nimmt den Eingabetext und zwei Schlüssel, „a“ und „b“, und wendet die affine Chiffrierverschlüsselung auf den Text an, wobei die Struktur des Textes erhalten bleibt.

def affine_cipher_encryption ( Text , A , B ) :
verschlüsselter_text = „“
für verkohlen In Text:
Wenn verkohlen. untere ( ) In Alphabet:
Wenn verkohlen. isabendessen ( ) :
verschlüsselter_text + = chr ( ( ( A * ( Wort ( verkohlen. untere ( ) ) - 97 ) + b ) % 26 ) + 65 )
anders :
verschlüsselter_text + = chr ( ( ( A * ( Wort ( verkohlen ) - 97 ) + b ) % 26 ) + 97 )
anders :

4. Bedingte Hauptprüfung
Überprüfen Sie in diesem Blockcode, ob er als Hauptprogramm ausgeführt wird. Es richtet den Argumentparser mit Beschreibungen für das Skript und seine Argumente ein. Das erforderliche Argument ist nur ein Pfad einer Textdateieingabe. Wenn wir den Ausgabepfad nicht angeben, soll standardmäßig der Name der Eingabedatei mit dem angehängten „_encrypted“ festgelegt werden. Für das Argument „keys“ möchten wir, dass es auf „a,b“ formatiert wird. Wenn wir es jedoch festlegen, ist der Standardwert 5 und 8.

Wenn __Name__ == '__hauptsächlich__' :
Parser = argparse. ArgumentParser ( Beschreibung = „Affine-Cipher-Verschlüsselung aus einer Textdatei“ )
Parser . add_argument ( 'Eingabedatei' , helfen = „Pfad zur Eingabetextdatei“ )
Parser . add_argument ( „-k“ , '--Schlüssel' , Typ = str , Standard = „5,8“ , helfen = „Schlüssel für die Affine-Chiffre im Format ‚a,b‘“ )
args = Parser . parse_args ( )

A , B = Karte ( int , args. Schlüssel . Teilt ( ',' ) )

mit offen ( args. Eingabedatei , 'R' ) als Datei :
Text = Datei . lesen ( )

# Extrahieren Sie den Dateinamen aus dem Eingabedateipfad
Eingabedateiname , Verlängerung = Du . Weg . Splitext ( args. Eingabedatei )
default_output_file = Eingabedateiname + „_encrypted“ + Erweiterung

# Verschlüsseln Sie den Text mit der affinen Verschlüsselung
verschlüsselter_text = affine_cipher_encryption ( Text , A , B )

# Schreiben Sie den verschlüsselten Text in eine neue Datei
mit offen ( default_output_file , 'In' ) als Datei :
Datei . schreiben ( verschlüsselter_text )

Sobald die Verschlüsselungsfunktion abgeschlossen ist, speichert unser Programm die Ausgabe schließlich mit derselben Dateierweiterung wie die Eingabedatei.

Speichern Sie es nun unter „affine_cipher.py“. Führen Sie nun das Programm aus, indem Sie den folgenden Befehl eingeben:

Python affine_cipher. py -H

Wenn Sie keinen Fehler finden, sieht die Ausgabe wie im folgenden Bild aus:


Alternativbild und Bildunterschrift : Affine Cipher Python-Programm

Konzeptioneller Beweiß

Wir haben eine vertrauliche Nachricht mit dem folgenden „message.txt“-Namen und möchten sie an unsere Mitglieder senden:


Alternativbild und Bildunterschrift : Klartext

Wir verwenden also das Programm, das wir erstellt haben, bevor wir diese Nachricht mit der Affine-Verschlüsselung mit den Schlüsseln 3 und 7 verschlüsseln möchten. Der Befehl lautet wie folgt:

Python affine_cipher. py Nachricht. txt -k 3 , 7


Alternativbild und Bildunterschrift : Affine Cipher Python-Programm

Mit der Geschwindigkeit eines Wimpernschlags wird die verschlüsselte Nachricht erfolgreich erstellt und in „message_encrypted.txt“ gespeichert. Schauen wir uns an, wie die Nachricht aussieht:


Alternativbild und Bildunterschrift : Affiner Chiffretext

Wie Sie sehen, ist die Nachricht verschlüsselt. Nur unsere Mitglieder, die das Verschlüsselungsverfahren und seine Schlüssel kennen, sind in der Lage, die Nachricht zu entschlüsseln.

Versuch es selber

Laden Sie diesen Programmquellcode auf unserer GitHub-Seite unter herunter https://github.com/bimando/Affine-Cipher .

Abschluss

Zusammenfassend lässt sich sagen, dass die Affine-Verschlüsselungsmethode, eine Form der monoalphabetischen Substitutionsverschlüsselung, durch die Verwendung von zwei Schlüsseln eine erhöhte Sicherheit bietet und eine sorgfältige Überlegung bei der Schlüsselauswahl erfordert. Um die Feinheiten der affinen Chiffre zu verstehen, ist es wichtig, Konzepte wie den größten gemeinsamen Teiler (GCD), teilerfremde Zahlen und modulare Arithmetik zu verstehen.

Die affine Chiffriergleichung E(x) = (a.x + b) mod m dient als grundlegendes Werkzeug für die Verschlüsselung, wobei „a“ und „b“ die Schlüssel darstellen und „x“ den Index des Klartextbuchstabens symbolisiert. Die Implementierung eines automatisierten Python-Programms für den Affine-Chiffrierverschlüsselungsprozess wurde demonstriert, um die umfangreichen Verschlüsselungsaufgaben effizient zu rationalisieren. Das Programm umfasst die wichtigsten Funktionen, einschließlich des Imports von Bibliotheken, der Zuordnung von Alphabeten, einer Verschlüsselungsfunktion und der Analyse von Befehlszeilenargumenten für Eingabe- und Ausgabepfade. Insbesondere aktiviert das Skript die Standardeinstellungen für die Schlüssel und Ausgabedateinamen, um einen reibungslosen Verschlüsselungsprozess zu ermöglichen.

Häufig gestellte Fragen (FAQs)

F1: Was ist die Affine-Chiffre und wie unterscheidet sie sich von der Caesar-Chiffre?

A1: Die affine Verschlüsselung ist eine Art monoalphabetische Substitutionsverschlüsselung, die zwei Schlüssel „a“ und „b“ zur Verschlüsselung verwendet. Im Gegensatz dazu verwendet die Caesar-Chiffre eine feste Verschiebung um drei Positionen für jeden Buchstaben im Klartext.

Q2. Was sind die Voraussetzungen, um die Affine-Chiffre zu verstehen?

A2: Um die affine Chiffre gründlich zu verstehen, ist es wichtig, Konzepte wie den größten gemeinsamen Teiler (GCD), Koprimzahlen und modulare Arithmetik zu beherrschen.

F3: Wie kann ich eine Nachricht mit der Affine-Verschlüsselung in Python verschlüsseln?

A3: Um den Affine-Verschlüsselungsprozess zu automatisieren, können Sie das im Artikel beschriebene Python-Programm verwenden. Das Programm verschlüsselt umfangreiche Texteingaben effizient und vereinfacht so den Verschlüsselungsvorgang. Der Artikel enthält schrittweise Anleitungen zum Importieren der Bibliotheken, zum Definieren der Alphabetzuordnung, zum Erstellen der Verschlüsselungsfunktion und zum Parsen der Befehlszeilenargumente für Eingabe- und Ausgabepfade.