De Base64-module van Python is een krachtige tool voor het coderen en decoderen van berichten. U kunt het gebruiken om gegevens veilig via internet te verzenden. Het is de standaardprocedure voor websites, apps en communicatiediensten om dit soort codering te gebruiken om gevoelige gegevens te beschermen tegen vijandige hackers.
De Base64-module heeft een paar functies die u kunt gebruiken om berichten te coderen en te decoderen, wat extra beveiliging toevoegt aan uw gegevensoverdrachten.
De Tkinter- en Base64-module
Met Tkinter kunt u desktop-applicaties maken. Het biedt een verscheidenheid aan widgets zoals knoppen, labels en tekstvakken die het gemakkelijk maken om zonder al te veel moeite applicaties te ontwikkelen. Je kunt ongelooflijke GUI-programma's maken met Tkinter. Je zou kunnen bouw een eenvoudige rekenmachine, een takenlijst-app of een typen test spel. Om Tkinter in uw systeem te installeren, opent u uw terminal en typt u:
pip installeer tkinter
BASE64 biedt functies voor het coderen van binaire gegevens naar ASCII en het decoderen ervan naar binair. Het ondersteunt zowel standaard- als URL-veilige codering, waardoor de overdracht van informatie veiliger wordt. Om een tekenreeks om te zetten in een Base64-teken, haalt u de ASCII-waarde van elk teken op en berekent u het 8-bits binaire getal. Converteer dit stuk van 6 bits door de cijfers opnieuw te groeperen en ze opnieuw om te zetten in hun respectieve decimale waarden. Gebruik ten slotte de Base64-coderingstabel om de Base64-waarden voor elk decimaalteken te krijgen.
Berichten coderen en decoderen in Python
U kunt de broncode van dit project vinden in zijn GitHub-opslagplaats.
Begin met het importeren van beide modules. Initialiseer de Tkinter-instantie en geef het hoofdvenster weer. Stel de titel, afmetingen in pixels en achtergrondkleur van het venster in.
van tkinter importeren *
importeren basis64
wortel = Tk()
root.geometry('750x400')
root.configure (achtergrond='water')
hoofdmap.titel("Berichten coderen en decoderen met Python")
Gebruik Label-widgets om nuttige informatie over de toepassing weer te geven. Het label accepteert een bovenliggend venster waarin u het wilt plaatsen, de tekst die het moet weergeven en de tekenstijl, kleur en achtergrondkleur. Gebruik pak() om de widget in een lay-outblok te ordenen voordat u deze in de bovenliggende widget plaatst. StringVar maakt het eenvoudiger om de waarde van een widget zoals een Label of Item te controleren.
Label (hoofdmap, tekst='Python Bericht Encoder en Decoder', lettertype='arial 25 vet', fg='wit', bg="paars".pakket()
Tekst = StringVar()
sleutel = StringVar()
modus = StringVar()
Resultaat = StringVar()
Definieer een functie Coderen() die een sleutel accepteert voor het coderen en decoderen samen met het bericht. Definieer een lege lijst en herhaal tot de lengte van het bericht. Stel de sleutelindex in als de modulus van de bewerking en sla de waarde op in variabele key_c. Gebruik orde() om de Unicode-waarde van het teken te krijgen en te gebruiken chr() om het teken te krijgen dat de opgegeven waarde vertegenwoordigt.
Voeg deze waarde toe aan de lijst. Verbind elk element van de lijst met een lege string en gebruik de coderen() methode om een utf-8-gecodeerde versie van de tekenreeks te retourneren. De base64.urlsafe_b64encode() methode codeert deze invoer en vervangt - door + en _ door /.
defCoderen(sleutelbericht):
nl = []voor i in bereik (len (bericht)):
sleutel_c = sleutel[i % len (sleutel)]
enc.append (chr((ord (bericht[i]) + ord (key_c)) % 256))
opbrengst base64.urlsafe_b64encode("".join (enc).encode()).decode()
Definieer een functie Decoderen() die een sleutel accepteert voor het coderen en decoderen samen met het bericht. Definieer een lege lijst en decodeer het bericht. Herhaal tot de lengte van het bericht en stel de modulus van de bewerking in als index en sla de waarde op in key_c. Voeg het teken van de Unicode-tekenreeksberichtdecodering toe, zoals hieronder weergegeven. Retourneert de gedecodeerde string.
defDecoderen(sleutelbericht):
dec = []
bericht = base64.urlsafe_b64decode (bericht).decode()voor i in bereik (len (bericht)):
sleutel_c = sleutel[i % len (sleutel)]
dec.toevoegen (chr((256 + ord (bericht[i]) - ord (key_c)) % 256))
opbrengst"".join (dec)
Definieer een functie Modus() dat haalt de modus op die door de gebruiker is ingevoerd in de invoerwidget en roept de juiste functie aan volgens de selectie. Geef een foutmelding weer als de gebruiker geen geldig antwoord invoert.
defmodus():
als (mode.get() == 'E'):
Resultaat.set (Coderen (key.get(), Text.get()))
elif (mode.get() == 'D'):
Resultaat.set (Decoderen (key.get(), Text.get()))
anders:
Resultaat.set('Ongeldige modus')
Definieer een functie Uitgang() om de tolk die op de achtergrond draait te doden en te beëindigen. Definieer een functie Reset() om de inhoud van het invoerveld te wissen.
defUitgang():
wortel.vernietigen()
defResetten():
Tekst.set("")
sleutelbos("")
modus.set("")
Resultaat.set("")
Definieer label- en invoerwidgets voor Bericht, Sleutel, Modus en Tekst. Specificeer het bovenliggende venster waarin u ze wilt plaatsen, de letterstijl, de tekst en de achtergrondkleur. Stel ook de coördinaten in om ze te ordenen.
Label (root, font='arial 17 vet', tekst='Bericht', fg='zwart', bg="water").plaats (x=60, j=100)
Invoer (root, font='ariële 15', tekstvariabele=Tekst, bg='wit').plaats (x=450, j=100)Label (root, font='arial 17 vet', tekst='Sleutel', fg='zwart', bg="water").plaats (x=60, j=130)
Invoer (root, font='ariële 15', tekstvariabele=sleutel, bg='wit').plaats (x=450, j=130)Label (root, font='arial 17 vet', tekst='Modus (E-coderen, D-decoderen)', fg='zwart', bg="water").plaats (x=60, j=160)
Invoer (root, font='ariële 15', tekstvariabele=modus, bg='wit').plaats (x=450, j=160)
Label (root, font='arial 17 vet', tekst='Tekst', fg='zwart', bg="water").plaats (x=60, j=190)
Invoer (root, font='arial 15 vet', tekstvariabele=Resultaat, bg='wit').plaats (x=450, j=190)
Definieer op dezelfde manier drie knoppen om het resultaat te bekijken, de velden te resetten en het programma te stoppen. De knoppen hebben een speciale parameter, command genaamd, die een functie opneemt en bij klikken uitvoert.
Knop (root, font='arial 15 vet', tekst='Resultaat', padx=2, bg='Lichtgrijs', commando=Modus).plaats (x=100, j=240)
Knop (root, font='arial 15 vet', tekst='Terugzetten', breedte=6, commando=Resetten, bg='Groente', padx=2).plaats (x=300, j=240)
Knop (root, font='arial 15 vet', tekst='Stop', breedte=6, commando=Afsluiten, bg='Rood', padx=2, padie=2).plaats (x=500, j=240)
De Hoofdlus() functie vertelt Python om de Tkinter-gebeurtenislus uit te voeren en te luisteren naar gebeurtenissen (zoals het indrukken van knoppen) totdat u het venster sluit.
root.mainloop()
De Message Encoder / Decoder in actie
Bij het uitvoeren van het programma geeft het programma een venster weer waarin u een bericht, een sleutel en een modus moet invoeren. Bij het selecteren van de coderingsmodus met een sleutel uit 2009, wordt het bericht Gebruikmaken van verandert in f8KRwpvCnlLChcKjwp5Sf8KW.
Evenzo krijgt u bij het kopiëren van het gecodeerde bericht en het terugplakken naar de invoer om het te decoderen het originele bericht terug.
Cyberbeveiliging met behulp van Python
U kunt Python gebruiken om scripts te schrijven die beveiligingscontroles automatiseren, netwerken bewaken en scannen op kwetsbaarheden. U kunt het gebruiken om robuuste toepassingen te maken die authenticatie gebruiken om de kans te verkleinen dat een aanvaller uw gegevens in gevaar brengt.
Cybersecurity-experts gebruiken Python vaak om webapplicatie-firewalls te bouwen om een applicatie te monitoren. Ze kunnen analyses van dreigingsdetectie uitvoeren met behulp van Machine Learning. Met deze architectuur is het veel eenvoudiger om aangepaste penetratietesten te maken en beveiligingsprotocollen te valideren.