Implementierung der affinen Verschlüsselung in Python

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Projekt lernst du, wie du den Affinen Verschlüsselungsalgorithmus in Python implementierst. Der Affine Chiffre ist eine Art Substitutionschiffre, die die Eigenschaften der Shift-Chiffre und der Multiplikator-Chiffre kombiniert. Es verwendet eine kryptographische Funktion, um jedes Zeichen einzeln zu verschlüsseln, was einen einfachen, aber effektiven Weg bietet, Text zu verschlüsseln und zu entschlüsseln.

👀 Vorschau

Beispiel 1: willkommen - > oclsaqc
Beispiel 2: willkommen - > oclsaqc
Beispiel 3: Qrwe - > Qroc
Beispiel 4: Keine - > Keine

🎯 Aufgaben

In diesem Projekt wirst du lernen:

  • Wie du die affine Verschlüsselungsfunktion in Python implementierst
  • Wie du die affine Verschlüsselungsfunktion mit Beispiel-Eingaben testest
  • Wie du die Benutzereingabe mit der affine Verschlüsselungsfunktion verschlüsselst

🏆 Errungenschaften

Nach Abschluss dieses Projekts wirst du in der Lage sein:

  • Die Grundprinzipien der Affinen Chiffre zu verstehen
  • Den affinen Verschlüsselungsalgorithmus in Python zu implementieren
  • Text mit der affine Verschlüsselungsfunktion zu verschlüsseln und zu entschlüsseln
  • Die affine Verschlüsselungsfunktion mit verschiedenen Eingaben zu testen

Implementiere die affine Verschlüsselungsfunktion

In diesem Schritt lernst du, wie du die affine Verschlüsselungsfunktion in Python implementierst. Folge den Schritten unten, um diesen Schritt abzuschließen:

  1. Öffne die Datei affine.py in deinem Texteditor.
  2. Füge im Inneren der Funktion affine_encryption(text) folgenden Code hinzu:
def affine_encryption(text: str) -> str:
    if text is None or text == "":
        return None

    a = 5
    b = 8
    m = 26
    encryption_text = ""

    for char in text:
        if "A" <= char <= "Z" or "a" <= char <= "z":
            char = char.lower()
            x = ord(char) - ord("a")
            y = (a * x + b) % m
            encryption_text += chr(y + ord("a"))
        else:
            encryption_text += char

    return encryption_text

Erklärung:

  • Die Funktion überprüft zunächst, ob die Eingabe text None oder eine leere Zeichenkette ist. Wenn ja, gibt sie None zurück.
  • Die Funktion setzt dann die Werte von a, b und m wie von der affine-Verschlüsselungsformel erforderlich.
  • Sie iteriert über jedes Zeichen in der Eingabe text.
  • Wenn das Zeichen ein halbweites englischsprachiges Zeichen (zwischen 'A' und 'Z' oder 'a' und 'z') ist, konvertiert es das Zeichen in Kleinbuchstaben, berechnet den entsprechenden numerischen Wert x, wendet die affine-Verschlüsselungsformel y = (a * x + b) % m an und fügt das verschlüsselte Zeichen zur Zeichenkette encryption_text hinzu.
  • Wenn das Zeichen kein halbweites englischsprachiges Zeichen ist, wird es ohne Änderung zur Zeichenkette encryption_text hinzugefügt.
  • Schließlich gibt die Funktion die Zeichenkette encryption_text zurück.
  1. Speichere die Datei affine.py.

Teste die affine Verschlüsselungsfunktion

In diesem Schritt wirst du die Funktion affine_encryption() mit den bereitgestellten Beispiel-Eingaben testen.

  1. Füge im Datei affine.py am Ende der Datei folgenden Code hinzu:
if __name__ == "__main__":
    ## Beispiel 1
    text = "willkommen"
    encryption_text = affine_encryption(text)
    print(f"Beispiel 1: {text} -> {encryption_text}")

    ## Beispiel 2
    text = " willkommen"
    encryption_text = affine_encryption(text)
    print(f"Beispiel 2: {text} -> {encryption_text}")

    ## Beispiel 3
    text = " Qrwe"
    encryption_text = affine_encryption(text)
    print(f"Beispiel 3: {text} -> {encryption_text}")

    ## Beispiel 4
    text = None
    encryption_text = affine_encryption(text)
    print(f"Beispiel 4: {text} -> {encryption_text}")
  1. Speichere die Datei affine.py.
  2. Öffne ein Terminal oder eine Eingabeaufforderung, navigiere zum Verzeichnis, das die Datei affine.py enthält, und führe folgenden Befehl aus:
python3 affine.py

Dies führt die Funktion affine_encryption() mit den bereitgestellten Beispiel-Eingaben aus und druckt die Ergebnisse aus.

Verifiziere, dass die Ausgabe mit den erwarteten Ergebnissen übereinstimmt:

Beispiel 1: willkommen -> oclsaqc
Beispiel 2:  willkommen ->  oclsaqc
Beispiel 3:  Qrwe -> Qroc
Beispiel 4: None -> None

Wenn die Ausgabe mit den erwarteten Ergebnissen übereinstimmt, funktioniert deine Funktion affine_encryption() korrekt.

Verschlüssel Benutzer-Eingabe

In diesem Schritt wirst du die Datei affine.py ändern, um es dem Benutzer zu ermöglichen, einen Text einzugeben und ihn mit der Funktion affine_encryption() zu verschlüsseln.

  1. Ersetze im Datei affine.py den vorhandenen Code am Ende der Datei (d.h. if __name__ == "__main__": und den darauffolgenden Teil) durch folgenden Code:
if __name__ == "__main__":
    text = input("Geben Sie den zu verschlüsselnden Text ein: ")
    encryption_text = affine_encryption(text)
    if encryption_text is None:
        print("Fehler: Die Eingabetext ist leer.")
    else:
        print(f"Verschlüsselter Text: {encryption_text}")

Erklärung:

  • Der Code fordert den Benutzer auf, den zu verschlüsselnden Text einzugeben.
  • Anschließend ruft er die Funktion affine_encryption() mit der Benutzereingabe auf und speichert das Ergebnis in der Variable encryption_text.
  • Wenn encryption_text None ist (was bedeutet, dass der Eingabetext leer war), druckt er eine Fehlermeldung.
  • Andernfalls druckt er den verschlüsselten Text.
  1. Speichere die Datei affine.py.
  2. Öffne ein Terminal oder eine Eingabeaufforderung, navigiere zum Verzeichnis, das die Datei affine.py enthält, und führe folgenden Befehl aus:
python3 affine.py
  1. Wenn Sie dazu aufgefordert werden, geben Sie einen zu verschlüsselnden Text ein und beobachten Sie die Ausgabe.

Herzlichen Glückwunsch! Sie haben die Implementierung der affinen Verschlüsselungsfunktion abgeschlossen und sie mit verschiedenen Eingaben getestet.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Sie haben dieses Projekt abgeschlossen. Sie können in LabEx weitere Übungen absolvieren, um Ihre Fähigkeiten zu verbessern.