Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

Pythons Base64-modul er et kraftfuldt værktøj til indkodning og afkodning af beskeder. Du kan bruge det til at sende data sikkert over internettet. Det er standardproceduren for websteder, apps og kommunikationstjenester at bruge denne form for kodning til at beskytte følsomme data fra fjendtlige hackere.

Base64-modulet har et par funktioner, du kan bruge til at kode og afkode beskeder, hvilket tilføjer noget ekstra sikkerhed til dine dataoverførsler.

Tkinter- og Base64-modulet

Tkinter giver dig mulighed for at oprette desktop-applikationer. Det tilbyder en række widgets som knapper, etiketter og tekstbokse, der gør det nemt at udvikle applikationer uden for meget indsats. Du kan oprette utrolige GUI-programmer med Tkinter. Du kunne måske bygge en simpel lommeregner, en to-do liste-app eller en skrive test spil. For at installere Tkinter i dit system skal du åbne din terminal og skrive:

instagram viewer
pip installer tkinter

BASE64 giver funktioner til indkodning af binære data til ASCII, som dekoder dem tilbage til binære. Den understøtter både standard- og URL-sikker kodning, hvilket gør overførsel af information mere sikker. For at konvertere en streng til et Base64-tegn skal du hente ASCII-værdien for hvert tegn og beregne dets 8-bit binære tegn. Konverter denne del af 6 bits ved at omgruppere cifrene og genkonvertere dem til deres respektive decimalværdier. Brug endelig Base64-kodningstabellen til at få Base64-værdierne for hver decimal.

Sådan kodes og afkodes meddelelser i Python

Du kan finde kildekoden til dette projekt i dens GitHub-depot.

Start med at importere begge moduler. Initialiser Tkinter-forekomsten og vis rodvinduet. Indstil vinduets titel, dimensioner i pixels og baggrundsfarve.

fra tkinter importere *
importere base64

root = Tk()
root.geometry('750x400')
root.configure (baggrund='aqua')
root.title("Kod og afkod meddelelser ved hjælp af Python")

Brug Label-widgets til at vise nyttige oplysninger om applikationen. Etiketten accepterer et overordnet vindue, hvor du vil placere det, den tekst, det skal vise, og skrifttypestil, farve og baggrundsfarve. Brug pakke() at organisere widgetten i en layoutblok, før den placeres i den overordnede widget. StringVar gør det nemmere at kontrollere værdien af ​​en widget som f.eks. en etiket eller indgang.

Etiket (rod, tekst='Python Message Encoder and Decoder', skrifttype='Arial 25 fed', fg='hvid', bg="lilla").pakke()
Tekst = StringVar()
nøgle = StringVar()
mode = StringVar()
Resultat = StringVar()

Definer en funktion Encode() der accepterer en nøgle til kodning og afkodning sammen med beskeden. Definer en tom liste, og gentag op til meddelelsens længde. Indstil nøgleindekset som modul for operationen og gem dens værdi i variabel key_c. Brug ord() for at få Unicode-værdien af ​​tegnet og bruge chr() for at få det tegn, der repræsenterer den angivne værdi.

Føj denne værdi til listen. Forbind hvert element på listen med en tom streng og brug indkode() metode til at returnere en utf-8-kodet version af strengen. Det base64.urlsafe_b64encode() metode koder dette input og erstatter - med + og _ med /.

defIndkode(nøgle, besked):
enc = []

til jeg i interval (len (meddelelse)):
key_c = nøgle[i % len (nøgle)]
enc.append (chr((ord (meddelelse[i]) + ord (key_c)) % 256))

Vend tilbage base64.urlsafe_b64encode("".join (enc).encode()).decode()

Definer en funktion Decode() der accepterer en nøgle til kodning og afkodning sammen med beskeden. Definer en tom liste og afkode beskeden. Gentag op til meddelelsens længde og indstil operationens modul som indeks og gem dens værdi i key_c. Tilføj tegnet for Unicode-strengmeddelelsesdekodningen som vist nedenfor. Returner den afkodede streng.

defAfkode(nøgle, besked):
dec = []
besked = base64.urlsafe_b64decode (message).decode()

til jeg i interval (len (meddelelse)):
key_c = nøgle[i % len (nøgle)]
dec.append (chr((256 + ord (meddelelse[i]) - ord (tast_c)) % 256))

Vend tilbage"".join (dec)

Definer en funktion Mode() der får den tilstand, der er indtastet af brugeren i Entry-widgetten, og kalder den relevante funktion i henhold til valget. Vis en fejlmeddelelse, hvis brugeren ikke indtaster et gyldigt svar.

defMode():
hvis (mode.get() == 'E'):
Result.set (Encode (key.get(), Text.get()))
elif (mode.get() == 'D'):
Result.set (Decode (key.get(), Text.get()))
andet:
Result.set('Ugyldig tilstand')

Definer en funktion Afslut() at dræbe og afslutte tolken, der kører i baggrunden. Definer en funktion Reset() for at slette indholdet af indtastningsfeltet.

defAfslut():
root.destroy()

defNulstil():
Text.set("")
key.set("")
mode.set("")
Result.set("")

Definer etiket- og indtastningswidgets for besked, nøgle, tilstand og tekst. Angiv det overordnede vindue, du vil placere dem i, skrifttypestilen, teksten og baggrundsfarven. Indstil også koordinaterne for at organisere dem.

Etiket (root, font='Arial 17 fed', tekst='Besked', fg='sort', bg="aqua").place (x=60, y=100)
Indtastning (root, font='Arial 15', textvariable=Tekst, bg='hvid').place (x=450, y=100)

Etiket (root, font='Arial 17 fed', tekst='Nøgle', fg='sort', bg="aqua").place (x=60, y=130)
Indtastning (root, font='Arial 15', tekstvariabel=nøgle, bg='hvid').place (x=450, y=130)

Etiket (root, font='Arial 17 fed', tekst='Tilstand (E-Encode, D-Decode)', fg='sort', bg="aqua").place (x=60, y=160)
Indtastning (root, font='Arial 15', tekstvariabel=tilstand, bg='hvid').place (x=450, y=160)

Etiket (root, font='Arial 17 fed', tekst='Tekst', fg='sort', bg="aqua").place (x=60, y=190)
Indtastning (root, font='Arial 15 fed', textvariable=Resultat, bg='hvid').place (x=450, y=190)

På samme måde skal du definere tre knapper for at se resultatet, nulstille felterne og stoppe programmet. Knapperne har en speciel parameter kaldet kommando, som tager en funktion ind og udfører den ved klik.

Knap (rod, skrifttype='Arial 15 fed', tekst='Resultat', padx=2, bg='Lysegrå', kommando=Tilstand).place (x=100, y=240)
Knap (rod, skrifttype='Arial 15 fed', tekst='Nulstil', bredde=6, kommando=Nulstil, bg='Grøn', padx=2).place (x=300, y=240)
Knap (rod, skrifttype='Arial 15 fed', tekst='Hold op', bredde=6, kommando=Afslut, bg='Rød', padx=2, pady=2).place (x=500, y=240)

Det mainloop() funktion fortæller Python at køre Tkinter-hændelsesløkken og lytte efter hændelser (såsom knaptryk), indtil du lukker vinduet.

root.mainloop()

Message Encoder / Decoder i aktion

Når du kører programmet, viser programmet et vindue, hvor du skal indtaste en besked, en nøgle og en tilstand. Ved valg af kodningstilstand med en nøgle fra 2009, vises meddelelsen Gøre brug af bliver til f8KRwpvCnlLChcKjwp5Sf8KW.

På samme måde, når du kopierer den kodede besked og indsætter den tilbage til input til afkodning med samme, får du den originale besked tilbage.

Cybersikkerhed ved hjælp af Python

Du kan bruge Python til at skrive scripts, der automatiserer sikkerhedstjek, overvåger netværk og scanner for sårbarheder. Du kan bruge det til at skabe robuste applikationer, der bruger godkendelse til at mindske chancerne for, at en hacker kompromitterer dine data.

Cybersikkerhedseksperter bruger ofte Python til at bygge webapplikationsfirewalls til at overvåge en applikation. De kan udføre trusselsdetektionsanalyse ved hjælp af Machine Learning. Med denne arkitektur er det meget nemmere at oprette brugerdefinerede penetrationstests og validere sikkerhedsprotokoller.