Pythons Base64-modul er et kraftig verktøy for koding og dekoding av meldinger. Du kan bruke den til å sende data sikkert over internett. Det er standard prosedyre for nettsteder, apper og kommunikasjonstjenester å bruke denne typen koding for å beskytte sensitive data fra fiendtlige hackere.
Base64-modulen har et par funksjoner du kan bruke til å kode og dekode meldinger, noe som gir litt ekstra sikkerhet til dataoverføringene dine.
Tkinter og Base64-modulen
Tkinter lar deg lage skrivebordsapplikasjoner. Den tilbyr en rekke widgets som knapper, etiketter og tekstbokser som gjør det enkelt å utvikle applikasjoner uten for mye innsats. Du kan lage utrolige GUI-programmer med Tkinter. Kanskje du kan bygge en enkel kalkulator, en oppgaveliste-app eller en skrivetestspill. For å installere Tkinter i systemet, åpne terminalen og skriv inn:
pip installer tkinter
BASE64 gir funksjoner for koding av binære data til ASCII som dekoder dem tilbake til binær. Den støtter både standard og URL-sikker koding som gjør overføring av informasjon sikrere. For å konvertere en streng til et Base64-tegn, få ASCII-verdien til hvert tegn og beregne dens 8-bits binære. Konverter denne delen av 6 biter ved å omgruppere sifrene og konvertere dem til deres respektive desimalverdier. Til slutt bruker du Base64-kodingstabellen for å få Base64-verdiene for hver desimal.
Hvordan kode og dekode meldinger i Python
Du kan finne kildekoden til dette prosjektet i sin GitHub-depot.
Start med å importere begge modulene. Initialiser Tkinter-forekomsten og vis rotvinduet. Angi tittel, dimensjoner i piksler og bakgrunnsfarge for vinduet.
fra tkinter import *
import base64
root = Tk()
root.geometry('750 x 400')
root.configure (bakgrunn='aqua')
root.title("Kode og avkode meldinger ved hjelp av Python")
Bruk Label-widgets for å vise nyttig informasjon om applikasjonen. Etiketten godtar et overordnet vindu du vil plassere det i, teksten den skal vise, og skriftstilen, fargen og bakgrunnsfargen. Bruk pakke() for å organisere widgeten i en layoutblokk før du plasserer den i den overordnede widgeten. StringVar gjør det enklere å kontrollere verdien av en widget som en etikett eller oppføring.
Etikett (root, tekst='Python Message Encoder and Decoder', font='Arial 25 fet', fg='hvit', bg="lilla").pakke()
Tekst = StringVar()
key = StringVar()
modus = StringVar()
Resultat = StringVar()
Definer en funksjon Encode() som godtar en nøkkel for koding og dekoding sammen med meldingen. Definer en tom liste og gjenta opp til lengden på meldingen. Sett nøkkelindeksen som modulen for operasjonen og lagre verdien i variabelen nøkkel_c. Bruk ord() for å få Unicode-verdien til tegnet og bruke chr() for å få tegnet som representerer den angitte verdien.
Legg til denne verdien i listen. Bli med hvert element i listen med en tom streng og bruk kode() metode for å returnere en utf-8-kodet versjon av strengen. De base64.urlsafe_b64encode() metoden koder denne inngangen og erstatter - med + og _ med /.
defKode(nøkkelbeskjed):
enc = []til Jeg i område (len (melding)):
key_c = key[i % len (nøkkel)]
enc.append (chr((ord (melding[i]) + ord (key_c)) % 256))
komme tilbake base64.urlsafe_b64encode("".join (enc).encode()).decode()
Definer en funksjon Dekode() som godtar en nøkkel for koding og dekoding sammen med meldingen. Definer en tom liste og dekod meldingen. Iterer opp til lengden på meldingen og sett modulen for operasjonen som indeks og lagre verdien i key_c. Legg til tegnet til Unicode-strengmeldingsdekoden som vist nedenfor. Returner den dekodede strengen.
defDekode(nøkkelbeskjed):
des = []
melding = base64.urlsafe_b64decode (melding).decode()til Jeg i område (len (melding)):
key_c = key[i % len (nøkkel)]
dec.append (chr((256 + ord (melding[i]) - ord (tast_c)) % 256))
komme tilbake"".join (des.)
Definer en funksjon Modus() som får modusen angitt av brukeren i Entry-widgeten og kaller den aktuelle funksjonen i henhold til valget. Vis en feilmelding hvis brukeren ikke skriver inn et gyldig svar.
defModus():
hvis (mode.get() == 'E'):
Result.set (Encode (key.get(), Text.get()))
elif (mode.get() == 'D'):
Result.set (Decode (key.get(), Text.get()))
ellers:
Result.set("Ugyldig modus")
Definer en funksjon Exit() å drepe og avslutte tolken som kjører i bakgrunnen. Definer en funksjon Reset() for å fjerne innholdet i Entry-feltet.
defExit():
root.destroy()
defNullstille():
Text.set("")
nøkkel.sett("")
mode.set("")
Result.set("")
Definer etikett- og oppføringswidgeter for melding, nøkkel, modus og tekst. Spesifiser det overordnede vinduet du vil plassere dem i, skriftstilen, teksten og bakgrunnsfargen. Angi også koordinatene for å organisere dem.
Etikett (root, font='Arial 17 fet', tekst='Beskjed', fg='svart', bg="aqua").sted (x=60, y=100)
Entry (root, font='arial 15', textvariable=Tekst, bg='hvit').sted (x=450, y=100)Etikett (root, font='Arial 17 fet', tekst='Nøkkel', fg='svart', bg="aqua").sted (x=60, y=130)
Entry (root, font='arial 15', tekstvariabel=nøkkel, bg='hvit').sted (x=450, y=130)Etikett (root, font='Arial 17 fet', tekst='Modus (E-Encode, D-Decode)', fg='svart', bg="aqua").sted (x=60, y=160)
Entry (root, font='arial 15', tekstvariabel=modus, bg='hvit').sted (x=450, y=160)
Etikett (root, font='Arial 17 fet', tekst='Tekst', fg='svart', bg="aqua").sted (x=60, y=190)
Entry (root, font='Arial 15 fet', textvariable=Resultat, bg='hvit').sted (x=450, y=190)
På samme måte definerer du tre knapper for å se resultatet, tilbakestille feltene og stoppe programmet. Knappene har en spesiell parameter kalt kommando som tar inn en funksjon og utfører den ved klikk.
Knapp (root, font='Arial 15 fet', tekst='Resultat', padx=2, bg='Lysegrå', command=Mode).place (x=100, y=240)
Knapp (root, font='Arial 15 fet', tekst='Nullstille', bredde=6, kommando=Tilbakestill, bg='Grønn', padx=2).sted (x=300, y=240)
Knapp (root, font='Arial 15 fet', tekst='Stoppe', bredde=6, kommando=Avslutt, bg='Rød', padx=2, pady=2).sted (x=500, y=240)
De mainloop() funksjonen forteller Python å kjøre Tkinter-hendelsesløkken og lytte etter hendelser (for eksempel knappetrykk) til du lukker vinduet.
root.mainloop()
Meldingskoderen/dekoderen i aksjon
Når du kjører programmet, viser programmet et vindu der du må skrive inn en melding, en nøkkel og en modus. Når du velger kodingsmodus med en nøkkel fra 2009, vises meldingen Benytte seg av blir til f8KRwpvCnlLChcKjwp5Sf8KW.
På samme måte, ved å kopiere den kodede meldingen og lime den tilbake til inngangen for dekoding med den samme, får du den opprinnelige meldingen tilbake.
Cybersikkerhet ved hjelp av Python
Du kan bruke Python til å skrive skript som automatiserer sikkerhetssjekker, overvåker nettverk og skanner etter sårbarheter. Du kan bruke den til å lage robuste applikasjoner som bruker autentisering for å redusere sjansene for at en angriper kompromitterer dataene dine.
Eksperter på nettsikkerhet bruker ofte Python til å bygge brannmurer for nettapplikasjoner for å overvåke en applikasjon. De kan utføre trusseldeteksjonsanalyse ved hjelp av maskinlæring. Med denne arkitekturen er det mye enklere å lage tilpassede penetrasjonstester og validere sikkerhetsprotokoller.