Das Base64-Modul von Python ist ein leistungsstarkes Tool zum Kodieren und Dekodieren von Nachrichten. Sie können es verwenden, um Daten sicher über das Internet zu senden. Es ist ein Standardverfahren für Websites, Apps und Kommunikationsdienste, diese Art der Verschlüsselung zu verwenden, um sensible Daten vor feindlichen Hackern zu schützen.
Das Base64-Modul verfügt über zwei Funktionen, mit denen Sie Nachrichten codieren und decodieren können, um Ihren Datenübertragungen zusätzliche Sicherheit zu verleihen.
Das Tkinter- und Base64-Modul
Mit Tkinter können Sie Desktop-Anwendungen erstellen. Es bietet eine Vielzahl von Widgets wie Schaltflächen, Beschriftungen und Textfelder, die es einfach machen, Anwendungen ohne großen Aufwand zu entwickeln. Mit Tkinter können Sie unglaubliche GUI-Programme erstellen. Du könntest einen einfachen Taschenrechner bauen
, eine To-do-Listen-App oder a Tippspiel Test. Um Tkinter in Ihrem System zu installieren, öffnen Sie Ihr Terminal und geben Sie Folgendes ein:pip installiere tkinter
BASE64 bietet Funktionen zum Codieren von Binärdaten in ASCII, um sie wieder in Binär zu decodieren. Es unterstützt sowohl Standard- als auch URL-sichere Codierung, wodurch die Übertragung von Informationen sicherer wird. Um eine Zeichenfolge in ein Base64-Zeichen zu konvertieren, rufen Sie den ASCII-Wert jedes Zeichens ab und berechnen Sie seine 8-Bit-Binärdatei. Konvertieren Sie diesen Teil von 6 Bits, indem Sie die Ziffern neu gruppieren und sie in ihre jeweiligen Dezimalwerte umwandeln. Verwenden Sie schließlich die Base64-Codierungstabelle, um die Base64-Werte für jede Dezimalstelle abzurufen.
So codieren und decodieren Sie Nachrichten in Python
Den Quellcode dieses Projekts finden Sie in seiner GitHub-Repository.
Beginnen Sie mit dem Importieren beider Module. Initialisieren Sie die Tkinter-Instanz und zeigen Sie das Root-Fenster an. Legen Sie den Titel, die Abmessungen in Pixel und die Hintergrundfarbe des Fensters fest.
aus tkinter importieren *
importieren base64
Wurzel = Tk()
root.geometry('750x400')
root.configure (Hintergrund='Wasser')
root.title(„Nachrichten mit Python codieren und decodieren“)
Verwenden Sie Label-Widgets, um nützliche Informationen über die Anwendung anzuzeigen. Das Etikett akzeptiert ein übergeordnetes Fenster, in dem Sie es platzieren möchten, den Text, den es anzeigen soll, sowie den Schriftstil, die Farbe und die Hintergrundfarbe. Verwenden Pack() um das Widget in einem Layout-Block zu organisieren, bevor es im übergeordneten Widget platziert wird. StringVar erleichtert die Steuerung des Werts eines Widgets wie einer Bezeichnung oder eines Eintrags.
Label (Stamm, Text='Python-Nachrichtencodierer und -decodierer', Schriftart='arial 25 fett', fg='Weiss', bg="lila").Pack()
Text = StringVar()
Schlüssel = StringVar()
Modus = StringVar()
Ergebnis = StringVar()
Definiere eine Funktion Kodieren() die zusammen mit der Nachricht einen Schlüssel zum Kodieren und Dekodieren akzeptiert. Definieren Sie eine leere Liste und iterieren Sie bis zur Länge der Nachricht. Legen Sie den Schlüsselindex als Modulus der Operation fest und speichern Sie seinen Wert in der Variablen key_c. Verwenden auftrag() um den Unicode-Wert des Zeichens zu erhalten und zu verwenden chr() um das Zeichen zu erhalten, das den angegebenen Wert darstellt.
Hängen Sie diesen Wert an die Liste an. Verbinden Sie jedes Element der Liste mit einer leeren Zeichenfolge und verwenden Sie die kodieren() -Methode, um eine utf-8-codierte Version der Zeichenfolge zurückzugeben. Der base64.urlsafe_b64encode() -Methode codiert diese Eingabe und ersetzt - durch + und _ durch /.
defKodieren(Schlüssel Nachricht):
enc = []für ich In range (len (Nachricht)):
key_c = key[i % len (Taste)]
enc.append (chr((ord (message[i]) + ord (key_c)) % 256))
zurückkehren base64.urlsafe_b64encode("".join (enc).encode()).decode()
Definiere eine Funktion Dekodieren() die zusammen mit der Nachricht einen Schlüssel zum Kodieren und Dekodieren akzeptiert. Definieren Sie eine leere Liste und entschlüsseln Sie die Nachricht. Iteriere bis zur Länge der Nachricht und setze den Modulus der Operation als Index und speichere seinen Wert in key_c. Hängen Sie das Zeichen der Dekodierung der Unicode-String-Nachricht wie unten gezeigt an. Gibt die decodierte Zeichenfolge zurück.
defDekodieren(Schlüssel Nachricht):
dez = []
Nachricht = base64.urlsafe_b64decode (Nachricht).decode()für ich In range (len (Nachricht)):
key_c = key[i % len (Taste)]
dec.append (chr((256 + ord (message[i]) - ord (key_c)) % 256))
zurückkehren"".join (dez)
Definiere eine Funktion Modus() das den vom Benutzer im Eingabe-Widget eingegebenen Modus erhält und die entsprechende Funktion gemäß der Auswahl aufruft. Falls der Benutzer keine gültige Antwort eingibt, wird eine Fehlermeldung angezeigt.
defModus():
Wenn (mode.get() == 'E'):
Ergebnis.set (Codieren (key.get(), Text.get()))
elf (mode.get() == 'D'):
Ergebnis.set (Decodieren (key.get(), Text.get()))
anders:
Ergebnis.set('Ungültiger Modus')
Definiere eine Funktion Ausfahrt() um den im Hintergrund laufenden Interpreter zu beenden und zu beenden. Definieren Sie eine Funktion Reset(), um den Inhalt des Eingabefelds zu löschen.
defAusfahrt():
root.destroy()
defZurücksetzen():
Text.set("")
Schlüsselsatz("")
Modus eingestellt("")
Ergebnis.set("")
Definieren Sie Beschriftungs- und Eintrags-Widgets für Nachricht, Schlüssel, Modus und Text. Geben Sie das übergeordnete Fenster an, in dem Sie sie platzieren möchten, den Schriftstil, den Text und die Hintergrundfarbe. Stellen Sie auch die Koordinaten ein, um sie zu organisieren.
Bezeichnung (Stamm, Schriftart='arial 17 fett', text='Nachricht', fg='Schwarz', bg="Wasser").Stelle (x=60, y=100)
Eintrag (root, font='Arial 15', Textvariable=Text, bg='Weiss').Stelle (x=450, y=100)Bezeichnung (Stamm, Schriftart='arial 17 fett', text='Taste', fg='Schwarz', bg="Wasser").Stelle (x=60, y=130)
Eintrag (root, font='Arial 15', Textvariable=Schlüssel, bg='Weiss').Stelle (x=450, y=130)Bezeichnung (Stamm, Schriftart='arial 17 fett', text='Modus (E-Codierung, D-Decodierung)', fg='Schwarz', bg="Wasser").Stelle (x=60, y=160)
Eintrag (root, font='Arial 15', Textvariable=Modus, bg='Weiss').Stelle (x=450, y=160)
Bezeichnung (Stamm, Schriftart='arial 17 fett', text='Text', fg='Schwarz', bg="Wasser").Stelle (x=60, y=190)
Eintrag (root, font='arial 15 fett', Textvariable=Ergebnis, bg='Weiss').Stelle (x=450, y=190)
Definieren Sie auf ähnliche Weise drei Schaltflächen, um das Ergebnis anzuzeigen, die Felder zurückzusetzen und das Programm anzuhalten. Die Schaltflächen haben einen speziellen Parameter namens Befehl, der eine Funktion aufnimmt und beim Klicken ausführt.
Schaltfläche (root, font='arial 15 fett', text='Ergebnis', padx=2, bg='Hellgrau', command=Mode).place (x=100, y=240)
Schaltfläche (root, font='arial 15 fett', text='Zurücksetzen', Breite =6, Befehl=Zurücksetzen, bg='Grün', padx=2).Stelle (x=300, y=240)
Schaltfläche (root, font='arial 15 fett', text='Stoppen', Breite =6, Befehl=Beenden, bg='Rot', padx=2, pady=2).Stelle (x=500, y=240)
Der Hauptschleife() Die Funktion weist Python an, die Tkinter-Ereignisschleife auszuführen und auf Ereignisse (z. B. Tastendrücke) zu warten, bis Sie das Fenster schließen.
root.mainloop()
Der Nachrichten-Encoder/Decoder in Aktion
Beim Ausführen des Programms zeigt das Programm ein Fenster an, in dem Sie eine Nachricht, einen Schlüssel und einen Modus eingeben müssen. Beim Auswählen des Codierungsmodus mit einem Schlüssel von 2009 wird die Meldung Gebrauch machen von verwandelt sich in f8KRwpvCnlLChcKjwp5Sf8KW.
In ähnlicher Weise erhalten Sie die ursprüngliche Nachricht zurück, wenn Sie die codierte Nachricht kopieren und wieder in die Eingabe einfügen, um sie zu decodieren.
Cybersicherheit mit Python
Sie können Python verwenden, um Skripte zu schreiben, die Sicherheitsüberprüfungen automatisieren, Netzwerke überwachen und nach Schwachstellen suchen. Sie können es verwenden, um robuste Anwendungen zu erstellen, die Authentifizierung verwenden, um die Wahrscheinlichkeit zu verringern, dass ein Angreifer Ihre Daten kompromittiert.
Cybersicherheitsexperten verwenden häufig Python, um Firewalls für Webanwendungen zu erstellen, um eine Anwendung zu überwachen. Sie können mithilfe von maschinellem Lernen Bedrohungserkennungsanalysen durchführen. Mit dieser Architektur ist es viel einfacher, benutzerdefinierte Penetrationstests zu erstellen und Sicherheitsprotokolle zu validieren.