Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Pythonov modul Base64 moćan je alat za kodiranje i dekodiranje poruka. Možete ga koristiti za sigurno slanje podataka putem interneta. Standardna je procedura za web stranice, aplikacije i komunikacijske usluge da koriste ovu vrstu kodiranja za zaštitu osjetljivih podataka od neprijateljskih hakera.

Modul Base64 ima par funkcija koje možete koristiti za kodiranje i dekodiranje poruka, dodajući dodatnu sigurnost vašim prijenosima podataka.

Modul Tkinter i Base64

Tkinter vam omogućuje stvaranje desktop aplikacija. Nudi razne widgete kao što su gumbi, oznake i tekstni okviri koji olakšavaju razvoj aplikacija bez previše truda. S Tkinterom možete stvoriti nevjerojatne GUI programe. Mogao bi izraditi jednostavan kalkulator, aplikacija za popis obaveza ili a igra testa tipkanja. Da biste instalirali Tkinter u svoj sustav, otvorite terminal i upišite:

pip instaliraj tkinter
instagram viewer

BASE64 pruža funkcije za kodiranje binarnih podataka u ASCII dekodirajući ih natrag u binarno. Podržava i standardno i URL-sigurno kodiranje što prijenos informacija čini sigurnijim. Da biste pretvorili niz u znak Base64, uzmite ASCII vrijednost svakog znaka i izračunajte njegovu 8-bitnu binarnu vrijednost. Pretvorite ovaj dio od 6 bita ponovnim grupiranjem znamenki i njihovim ponovnim pretvaranjem u njihove odgovarajuće decimalne vrijednosti. Na kraju, upotrijebite Base64 tablicu kodiranja da biste dobili Base64 vrijednosti za svaku decimalu.

Kako kodirati i dekodirati poruke u Pythonu

Izvorni kod ovog projekta možete pronaći u GitHub spremište.

Počnite uvozom oba modula. Inicijalizirajte Tkinter instancu i prikažite korijenski prozor. Postavite naslov, dimenzije u pikselima i boju pozadine prozora.

iz tkinter uvoz *
uvoz baza64

korijen = Tk()
root.geometry('750x400')
root.configure (background='aqua')
root.title("Kodiranje i dekodiranje poruka pomoću Pythona")

Koristite widgete Oznaka za prikaz korisnih informacija o aplikaciji. Oznaka prihvaća nadređeni prozor u koji je želite smjestiti, tekst koji treba prikazati te stil fonta, boju i boju pozadine. Koristiti paket() za organiziranje widgeta u bloku izgleda prije nego što ga postavite u nadređeni widget. StringVar olakšava kontrolu vrijednosti widgeta kao što je Label ili Entry.

Oznaka (korijen, tekst='Python koder i dekoder poruka', font='arial 25 bold', fg='bijelo', bg="ljubičasta").paket()
Tekst = StringVar()
ključ = StringVar()
mod = StringVar()
Rezultat = StringVar()

Definirajte funkciju Kodiraj() koji prihvaća ključ za kodiranje i dekodiranje zajedno s porukom. Definirajte prazan popis i iterirajte do duljine poruke. Postavite indeks ključa kao modul operacije i pohranite njegovu vrijednost u varijablu ključ_c. Koristiti red() da dobijete Unicode vrijednost znaka i koristite chr() da biste dobili znak koji predstavlja navedenu vrijednost.

Dodajte ovu vrijednost na popis. Svaki element popisa spojite praznim nizom i upotrijebite kodirati() metoda za vraćanje utf-8 kodirane verzije niza. The base64.urlsafe_b64encode() metoda kodira ovaj unos i zamjenjuje - s + i _ s /.

defKodiraj(ključ, poruka):
enc = []

za ja u raspon (len (poruka)):
ključ_c = ključ[i % len (ključ)]
enc.append (chr((ord (message[i]) + ord (key_c)) % 256))

povratak base64.urlsafe_b64encode("".join (enc).encode()).decode()

Definirajte funkciju Dekodiraj() koji prihvaća ključ za kodiranje i dekodiranje zajedno s porukom. Definirajte prazan popis i dekodirajte poruku. Iterirajte do duljine poruke i postavite modul operacije kao indeks i pohranite njegovu vrijednost u key_c. Dodajte znak dekodiranja poruke niza Unicode kao što je prikazano u nastavku. Vrati dekodirani niz.

defDekodirati(ključ, poruka):
pad = []
poruka = ​​base64.urlsafe_b64decode (poruka).decode()

za ja u raspon (len (poruka)):
ključ_c = ključ[i % len (ključ)]
dec.append (chr((256 + ord (poruka[i]) - ord (ključ_c)) % 256))

povratak"".pridružiti se (dec)

Definirajte funkciju način() koji dobiva način rada koji je korisnik unio u widget Entry i poziva odgovarajuću funkciju prema odabiru. U slučaju da korisnik ne unese važeći odgovor, prikazati poruku o pogrešci.

defNačin rada():
ako (mode.get() == 'E'):
Result.set (Encode (key.get(), Text.get()))
elif (mode.get() == 'D'):
Result.set (Decode (key.get(), Text.get()))
drugo:
Result.set('Nevažeći način')

Definirajte funkciju Izlaz() ubiti i prekinuti tumač koji radi u pozadini. Definirajte funkciju Reset() za brisanje sadržaja polja za unos.

defIzlaz():
root.destroy()

defResetiraj():
Text.set("")
ključ.set("")
mode.set("")
Result.set("")

Definirajte widgete za oznaku i unos za poruku, ključ, način rada i tekst. Odredite nadređeni prozor u koji ih želite smjestiti, stil fonta, tekst i boju pozadine. Također postavite koordinate da ih organizirate.

Oznaka (korijen, font='arial 17 bold', tekst='Poruka', fg='crno', bg="aqua").mjesto (x=60, y=100)
Unos (root, font='arial 15', textvariable=Tekst, bg='bijelo').mjesto (x=450, y=100)

Oznaka (korijen, font='arial 17 bold', tekst='Ključ', fg='crno', bg="aqua").mjesto (x=60, y=130)
Unos (root, font='arial 15', tekstvarijabla=ključ, bg='bijelo').mjesto (x=450, y=130)

Oznaka (korijen, font='arial 17 bold', tekst='Način (E-Encode, D-Decode)', fg='crno', bg="aqua").mjesto (x=60, y=160)
Unos (root, font='arial 15', textvariable=mode, bg='bijelo').mjesto (x=450, y=160)

Oznaka (korijen, font='arial 17 bold', tekst='Tekst', fg='crno', bg="aqua").mjesto (x=60, y=190)
Unos (root, font='arial 15 bold', textvariable=Rezultat, bg='bijelo').mjesto (x=450, y=190)

Slično, definirajte tri gumba za pregled rezultata, resetiranje polja i zaustavljanje programa. Gumbi imaju poseban parametar koji se zove naredba koji preuzima funkciju i izvršava je nakon klika.

Gumb (root, font='arial 15 bold', tekst='Proizlaziti', padx=2, bg='Svijetlo siva', naredba=Način).mjesto (x=100, y=240)
Gumb (root, font='arial 15 bold', tekst='Poništi', širina=6, naredba=Reset, bg='zeleno', padx=2).mjesto (x=300, y=240)
Gumb (root, font='arial 15 bold', tekst='Stop', širina=6, naredba=Izlaz, bg='Crvena', padx=2, pady=2).mjesto (x=500, y=240)

The glavna petlja() funkcija govori Pythonu da pokrene Tkinter petlju događaja i osluškuje događaje (kao što su pritisci gumba) dok ne zatvorite prozor.

root.mainloop()

Koder/dekoder poruka na djelu

Prilikom pokretanja programa, program prikazuje prozor u kojem morate unijeti poruku, ključ i način rada. Prilikom odabira načina kodiranja s ključem 2009 prikazuje se poruka Iskoristiti preobraziti se u f8KRwpvCnlLChcKjwp5Sf8KW.

Slično, kopiranjem kodirane poruke i lijepljenjem natrag na ulaz za dekodiranje s istom, dobivate izvornu poruku natrag.

Kibernetička sigurnost pomoću Pythona

Python možete koristiti za pisanje skripti koje automatiziraju sigurnosne provjere, nadziru mreže i traže ranjivosti. Možete ga koristiti za izradu robusnih aplikacija koje koriste autentifikaciju kako bi smanjile šanse da napadač ugrozi vaše podatke.

Stručnjaci za kibernetičku sigurnost često koriste Python za izgradnju vatrozida web aplikacija za nadzor aplikacije. Oni mogu izvršiti analizu otkrivanja prijetnji pomoću strojnog učenja. S ovom arhitekturom puno je lakše izraditi prilagođene testove prodora i potvrditi sigurnosne protokole.