Pythonov modul Base64 je zmogljivo orodje za kodiranje in dekodiranje sporočil. Uporabite ga lahko za varno pošiljanje podatkov prek interneta. Standardni postopek za spletna mesta, aplikacije in komunikacijske storitve je uporaba te vrste kodiranja za zaščito občutljivih podatkov pred sovražnimi hekerji.
Modul Base64 ima par funkcij, ki jih lahko uporabite za kodiranje in dekodiranje sporočil, kar vašim prenosom podatkov doda nekaj dodatne varnosti.
Modul Tkinter in Base64
Tkinter omogoča ustvarjanje namiznih aplikacij. Ponuja različne pripomočke, kot so gumbi, oznake in besedilna polja, ki olajšajo razvoj aplikacij brez prevelikega truda. S Tkinterjem lahko ustvarite neverjetne programe GUI. Lahko bi sestavite preprost kalkulator, aplikacija za seznam opravil ali a igra testa tipkanja. Če želite namestiti Tkinter v svoj sistem, odprite terminal in vnesite:
pip namestite tkinter
BASE64 ponuja funkcije za kodiranje binarnih podatkov v ASCII, ki jih dekodira nazaj v binarno. Podpira standardno in URL-varno kodiranje, zaradi česar je prenos informacij varnejši. Če želite pretvoriti niz v znak Base64, pridobite vrednost ASCII vsakega znaka in izračunajte njegovo 8-bitno binarno vrednost. Pretvorite ta del 6 bitov tako, da ponovno združite števke in jih ponovno pretvorite v njihove ustrezne decimalne vrednosti. Na koncu uporabite tabelo kodiranja Base64, da dobite vrednosti Base64 za vsako decimalko.
Kako kodirati in dekodirati sporočila v Pythonu
Izvorno kodo tega projekta najdete v Repozitorij GitHub.
Začnite z uvozom obeh modulov. Inicializirajte primerek Tkinter in prikažite korensko okno. Nastavite naslov, dimenzije v slikovnih pikah in barvo ozadja okna.
od tkinter uvoz *
uvoz base64
koren = Tk()
root.geometry('750 x 400')
root.configure (background='aqua')
root.title("Kodiraj in dekodiraj sporočila z uporabo Pythona")
Za prikaz uporabnih informacij o aplikaciji uporabite pripomočke Label. Oznaka sprejme nadrejeno okno, v katerega jo želite postaviti, besedilo, ki naj bo prikazano, ter slog pisave, barvo in barvo ozadja. Uporaba paket() da organizirate gradnik v bloku postavitve, preden ga postavite v nadrejeni gradnik. StringVar olajša nadzor nad vrednostjo gradnika, kot je oznaka ali vnos.
Oznaka (koren, besedilo='Kodirnik in dekodirnik sporočil Python', pisava='arial 25 krepko', fg='belo', bg="vijolična").pack()
Besedilo = StringVar()
ključ = StringVar()
način = StringVar()
Rezultat = StringVar()
Definirajte funkcijo Kodiraj() ki sprejme ključ za kodiranje in dekodiranje skupaj s sporočilom. Določite prazen seznam in ponavljajte do dolžine sporočila. Nastavite indeks ključa kot modul operacije in shranite njegovo vrednost v spremenljivko key_c. Uporaba ord() da pridobite Unicode vrednost znaka in uporabite chr() da dobite znak, ki predstavlja podano vrednost.
Dodajte to vrednost na seznam. Povežite vsak element seznama s praznim nizom in uporabite kodiraj() metoda za vrnitev utf-8 kodirane različice niza. The base64.urlsafe_b64encode() metoda kodira ta vnos in zamenja - z + in _ z /.
defKodiraj(ključ, sporočilo):
enc = []za jaz v obseg (len (sporočilo)):
key_c = key[i % len (key)]
enc.append (chr((ord (sporočilo[i]) + ord (key_c)) % 256))
vrnitev base64.urlsafe_b64encode("".join (enc).encode()).decode()
Definirajte funkcijo Dekodiraj() ki sprejme ključ za kodiranje in dekodiranje skupaj s sporočilom. Določite prazen seznam in dekodirajte sporočilo. Ponavljajte do dolžine sporočila in nastavite modul operacije kot indeks ter shranite njegovo vrednost v key_c. Dodajte znak dekodiranja sporočila niza Unicode, kot je prikazano spodaj. Vrni dekodirani niz.
defDekodiraj(ključ, sporočilo):
dec = []
sporočilo = base64.urlsafe_b64decode (sporočilo).decode()za jaz v obseg (len (sporočilo)):
key_c = key[i % len (key)]
dec.append (chr((256 + ord (sporočilo[i]) - ord (key_c)) % 256))
vrnitev"".join (dec)
Definirajte funkcijo način() ki pridobi način, ki ga uporabnik vnese v gradniku Entry, in pokliče ustrezno funkcijo glede na izbiro. Če uporabnik ne vnese veljavnega odgovora, prikaže sporočilo o napaki.
defNačin():
če (mode.get() == 'E'):
Result.set (Encode (key.get(), Text.get()))
elif (mode.get() == 'D'):
Result.set (Decode (key.get(), Text.get()))
drugače:
Result.set('Neveljaven način')
Definirajte funkcijo Izhod() za ubijanje in prekinitev tolmača, ki teče v ozadju. Definirajte funkcijo Reset(), da počistite vsebino polja za vnos.
defIzhod():
root.destroy()
defPonastaviti():
Text.set("")
key.set("")
mode.set("")
Result.set("")
Določite pripomočke za oznako in vnos za sporočilo, ključ, način in besedilo. Določite nadrejeno okno, v katerega jih želite postaviti, slog pisave, besedilo in barvo ozadja. Nastavite tudi koordinate, da jih organizirate.
Oznaka (koren, pisava='arial 17 krepko', besedilo='Sporočilo', fg='Črna', bg="aqua").mesto (x=60, y=100)
Vnos (koren, pisava='arial 15', textvariable=Besedilo, bg='belo').mesto (x=450, y=100)Oznaka (koren, pisava='arial 17 krepko', besedilo='Ključ', fg='Črna', bg="aqua").mesto (x=60, y=130)
Vnos (koren, pisava='arial 15', besedilna spremenljivka=ključ, bg='belo').mesto (x=450, y=130)Oznaka (koren, pisava='arial 17 krepko', besedilo='Način (E-kodiranje, D-dekodiranje)', fg='Črna', bg="aqua").mesto (x=60, y=160)
Vnos (koren, pisava='arial 15', textvariable=mode, bg='belo').mesto (x=450, y=160)
Oznaka (koren, pisava='arial 17 krepko', besedilo='Besedilo', fg='Črna', bg="aqua").mesto (x=60, y=190)
Vnos (koren, pisava='arial 15 krepko', textvariable=Rezultat, bg='belo').mesto (x=450, y=190)
Podobno določite tri gumbe za ogled rezultata, ponastavitev polj in zaustavitev programa. Gumbi imajo poseben parameter, imenovan ukaz, ki prevzame funkcijo in jo izvede ob kliku.
Gumb (root, font='arial 15 krepko', besedilo='Rezultat', padx=2, bg='Svetlosiva', ukaz=Način).mesto (x=100, y=240)
Gumb (root, font='arial 15 krepko', besedilo='Ponastaviti', širina=6, ukaz=Ponastavi, bg='Zelena', padx=2).mesto (x=300, y=240)
Gumb (root, font='arial 15 krepko', besedilo='Stop', širina=6, ukaz=Izhod, bg='Rdeča', padx=2, pady=2).mesto (x=500, y=240)
The glavna zanka() funkcija pove Pythonu, naj zažene zanko dogodkov Tkinter in posluša dogodke (kot so pritiski gumbov), dokler ne zaprete okna.
root.mainloop()
Kodirnik/dekodirnik sporočil v akciji
Ob zagonu program prikaže okno, kjer morate vnesti sporočilo, ključ in način. Ob izbiri načina kodiranja s tipko 2009 se prikaže sporočilo Izkoristijo se spremeni v f8KRwpvCnlLChcKjwp5Sf8KW.
Podobno, ko kopirate kodirano sporočilo in ga prilepite nazaj na vhod za dekodiranje z istim, dobite nazaj izvirno sporočilo.
Kibernetska varnost z uporabo Pythona
Python lahko uporabite za pisanje skriptov, ki avtomatizirajo varnostne preglede, spremljajo omrežja in iščejo ranljivosti. Uporabite ga lahko za ustvarjanje robustnih aplikacij, ki uporabljajo avtentikacijo za zmanjšanje možnosti, da bi napadalec ogrozil vaše podatke.
Strokovnjaki za kibernetsko varnost pogosto uporabljajo Python za izdelavo požarnih zidov spletnih aplikacij za spremljanje aplikacije. Lahko izvedejo analizo odkrivanja groženj s pomočjo strojnega učenja. S to arhitekturo je veliko lažje ustvariti teste prodora po meri in potrditi varnostne protokole.