Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Pythons Base64-modul är ett kraftfullt verktyg för att koda och avkoda meddelanden. Du kan använda den för att skicka data säkert över internet. Det är standardprocedur för webbplatser, appar och kommunikationstjänster att använda denna typ av kodning för att skydda känslig data från fientliga hackare.

Base64-modulen har ett par funktioner som du kan använda för att koda och avkoda meddelanden, vilket ger extra säkerhet till dina dataöverföringar.

Tkinter och Base64-modulen

Tkinter låter dig skapa skrivbordsapplikationer. Den erbjuder en mängd olika widgets som knappar, etiketter och textrutor som gör det enkelt att utveckla applikationer utan alltför mycket ansträngning. Du kan skapa otroliga GUI-program med Tkinter. Du kanske bygga en enkel miniräknare, en att göra-lista-app eller en skrivtestspel. För att installera Tkinter i ditt system, öppna din terminal och skriv:

instagram viewer
pip installera tkinter

BASE64 tillhandahåller funktioner för att koda binär data till ASCII och avkoda dem tillbaka till binär data. Den stöder både standard- och URL-säker kodning vilket gör överföringen av information säkrare. För att konvertera en sträng till ett Base64-tecken, hämta ASCII-värdet för varje tecken och beräkna dess 8-bitars binär. Konvertera denna bit av 6 bitar genom att gruppera om siffrorna och konvertera dem till deras respektive decimalvärden. Använd slutligen Base64-kodningstabellen för att få Base64-värdena för varje decimal.

Hur man kodar och avkodar meddelanden i Python

Du kan hitta källkoden för detta projekt i dess GitHub-förråd.

Börja med att importera båda modulerna. Initiera Tkinter-instansen och visa rotfönstret. Ställ in titel, mått i pixlar och bakgrundsfärg för fönstret.

från tkinter importera *
importera bas64

root = Tk()
root.geometry('750x400')
root.configure (bakgrund="aqua")
root.title("Koda och avkoda meddelanden med Python")

Använd Label-widgets för att visa användbar information om programmet. Etiketten accepterar ett överordnat fönster där du vill placera den, texten den ska visa och teckensnittsstil, färg och bakgrundsfärg. Använda sig av packa() för att organisera widgeten i ett layoutblock innan du placerar den i den överordnade widgeten. StringVar gör det enklare att kontrollera värdet på en widget som en etikett eller post.

Etikett (root, text="Python Message Encoder and Decoder", teckensnitt='Arial 25 fetstil', fg='vit', bg="lila").packa()
Text = StringVar()
nyckel = StringVar()
mode = StringVar()
Resultat = StringVar()

Definiera en funktion Koda() som accepterar en nyckel för kodning och avkodning tillsammans med meddelandet. Definiera en tom lista och iterera upp till meddelandets längd. Ställ in nyckelns index som modul för operationen och lagra dess värde i variabeln key_c. Använda sig av ord() för att få Unicode-värdet för tecknet och använda chr() för att få tecknet som representerar det angivna värdet.

Lägg till detta värde i listan. Anslut varje element i listan med en tom sträng och använd koda() metod för att returnera en utf-8-kodad version av strängen. De base64.urlsafe_b64encode() metod kodar denna ingång och ersätter - med + och _ med /.

defKoda(nyckel, meddelande):
enc = []

för i i intervall (len (meddelande)):
key_c = nyckel[i % len (nyckel)]
enc.append (chr((ord (meddelande[i]) + ord (key_c)) % 256))

lämna tillbaka base64.urlsafe_b64encode("".join (enc).encode()).decode()

Definiera en funktion Avkoda() som accepterar en nyckel för kodning och avkodning tillsammans med meddelandet. Definiera en tom lista och avkoda meddelandet. Iterera upp till meddelandets längd och ställ in operationsmodulen som index och lagra dess värde i key_c. Lägg till tecknet för Unicode-strängmeddelandeavkodningen enligt nedan. Returnera den avkodade strängen.

defAvkoda(nyckel, meddelande):
dec = []
meddelande = base64.urlsafe_b64decode (meddelande).decode()

för i i intervall (len (meddelande)):
key_c = nyckel[i % len (nyckel)]
dec.append (chr((256 + ord (meddelande[i]) - ord (nyckel_c)) % 256))

lämna tillbaka"".join (dec)

Definiera en funktion Läge() som får det läge som användaren anger i Ingångswidgeten och anropar lämplig funktion enligt valet. Om användaren inte anger ett giltigt svar, visa ett felmeddelande.

defLäge():
om (mode.get() == 'E'):
Result.set (Koda (key.get(), Text.get()))
elif (mode.get() == 'D'):
Result.set (Decode (key.get(), Text.get()))
annan:
Resultatet satt("Ogiltigt läge")

Definiera en funktion Utgång() för att döda och avsluta tolken som körs i bakgrunden. Definiera en funktion Reset() för att rensa bort innehållet i Inmatningsfältet.

defUtgång():
root.destroy()

defÅterställa():
Text.set("")
key.set("")
mode.set("")
Resultatet satt("")

Definiera etikett- och postwidgetar för meddelande, nyckel, läge och text. Ange det överordnade fönstret du vill placera dem i, typsnittet, texten och bakgrundsfärgen. Ställ också in koordinaterna för att organisera dem.

Etikett (root, font='Arial 17 fetstil', text='Meddelande', fg='svart', bg="aqua").place (x=60, y=100)
Entry (root, font='Arial 15', textvariable=Text, bg='vit').place (x=450, y=100)

Etikett (root, font='Arial 17 fetstil', text='Nyckel', fg='svart', bg="aqua").place (x=60, y=130)
Entry (root, font='Arial 15', textvariabel=nyckel, bg='vit').place (x=450, y=130)

Etikett (root, font='Arial 17 fetstil', text="Mode (E-Encode, D-Decode)", fg='svart', bg="aqua").place (x=60, y=160)
Entry (root, font='Arial 15', textvariabel=läge, bg='vit').place (x=450, y=160)

Etikett (root, font='Arial 17 fetstil', text='Text', fg='svart', bg="aqua").place (x=60, y=190)
Entry (root, font="Arial 15 fet", textvariable=Resultat, bg='vit').place (x=450, y=190)

På samma sätt definierar du tre knappar för att se resultatet, återställa fälten och stoppa programmet. Knapparna har en speciell parameter som kallas kommando som tar in en funktion och utför den vid klick.

Knapp (root, font="Arial 15 fet", text='Resultat', padx=2, bg='Ljusgrå', kommando=Läge).place (x=100, y=240)
Knapp (root, font="Arial 15 fet", text='Återställa', bredd=6, kommando=Återställ, bg='Grön', padx=2).place (x=300, y=240)
Knapp (root, font="Arial 15 fet", text='Sluta', bredd=6, kommando=Avsluta, bg='Röd', padx=2, pady=2).place (x=500, y=240)

De mainloop() funktionen säger åt Python att köra Tkinter-händelsslingan och lyssna efter händelser (som knapptryckningar) tills du stänger fönstret.

root.mainloop()

Meddelandekodaren/avkodaren i aktion

När du kör programmet visar programmet ett fönster där du måste ange ett meddelande, en nyckel och ett läge. När du väljer kodningsläge med en nyckel från 2009 visas meddelandet Använda förvandlas till f8KRwpvCnlLChcKjwp5Sf8KW.

På liknande sätt, när du kopierar det kodade meddelandet och klistrar tillbaka det till ingången för avkodning med detsamma, får du tillbaka det ursprungliga meddelandet.

Cybersäkerhet med Python

Du kan använda Python för att skriva skript som automatiserar säkerhetskontroller, övervakar nätverk och söker efter sårbarheter. Du kan använda den för att skapa robusta applikationer som använder autentisering för att minska risken för att en angripare äventyrar dina data.

Cybersäkerhetsexperter använder ofta Python för att bygga webbapplikationsbrandväggar för att övervaka en applikation. De kan utföra hotdetektionsanalyser med hjälp av maskininlärning. Med den här arkitekturen är det mycket lättare att skapa anpassade penetrationstester och validera säkerhetsprotokoll.