Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Moduł Base64 Pythona to potężne narzędzie do kodowania i dekodowania wiadomości. Możesz go użyć do bezpiecznego przesyłania danych przez Internet. Standardową procedurą dla stron internetowych, aplikacji i usług komunikacyjnych jest używanie tego rodzaju kodowania w celu ochrony poufnych danych przed wrogimi hakerami.

Moduł Base64 ma parę funkcji, których możesz użyć do kodowania i dekodowania wiadomości, dodając dodatkowe zabezpieczenia do transferów danych.

Moduł Tkinter i Base64

Tkinter umożliwia tworzenie aplikacji desktopowych. Oferuje różnorodne widżety, takie jak przyciski, etykiety i pola tekstowe, które ułatwiają tworzenie aplikacji bez zbytniego wysiłku. Możesz tworzyć niesamowite programy GUI za pomocą Tkintera. Możesz zbudować prosty kalkulator, aplikację z listą rzeczy do zrobienia lub gra testowa pisania. Aby zainstalować Tkintera w swoim systemie, otwórz terminal i wpisz:

instagram viewer
pip zainstaluj tkintera

BASE64 zapewnia funkcje do kodowania danych binarnych do dekodowania ASCII z powrotem do postaci binarnej. Obsługuje zarówno kodowanie standardowe, jak i bezpieczne dla adresów URL, dzięki czemu transmisja informacji jest bezpieczniejsza. Aby przekonwertować ciąg na znak Base64, pobierz wartość ASCII każdego znaku i oblicz jego 8-bitowy plik binarny. Przekonwertuj ten fragment 6 bitów, ponownie grupując cyfry i ponownie konwertując je na ich odpowiednie wartości dziesiętne. Na koniec użyj tabeli kodowania Base64, aby uzyskać wartości Base64 dla każdego miejsca po przecinku.

Jak kodować i dekodować wiadomości w Pythonie

Możesz znaleźć kod źródłowy tego projektu w jego Repozytorium GitHub.

Zacznij od zaimportowania obu modułów. Zainicjuj instancję Tkinter i wyświetl okno główne. Ustaw tytuł, wymiary w pikselach i kolor tła okna.

z tkinter import *
import podstawa64

pierwiastek = Tk()
korzeń.geometry(„750x400”)
root.configure (tło='wodny')
root.tytuł(„Koduj i dekoduj wiadomości za pomocą Pythona”)

Użyj widżetów etykiet, aby wyświetlić przydatne informacje o aplikacji. Etykieta akceptuje okno nadrzędne, w którym chcesz ją umieścić, tekst, który ma wyświetlać, oraz styl czcionki, kolor i kolor tła. Używać Pakiet() , aby uporządkować widżet w bloku układu przed umieszczeniem go w widgecie nadrzędnym. StringVar ułatwia kontrolowanie wartości widżetu, takiego jak etykieta lub wpis.

Etykieta (główny, tekst=„Koder i dekoder wiadomości w Pythonie”, czcionka=„Arial 25 pogrubiony”,fg='biały', bg="fioletowy").Pakiet()
Tekst = StringVar()
klucz = StringVar()
tryb = StringVar()
Wynik = StringVar()

Zdefiniuj funkcję Kodować() który akceptuje klucz do kodowania i dekodowania wraz z wiadomością. Zdefiniuj pustą listę i iteruj do długości wiadomości. Ustaw indeks klucza jako moduł operacji i zapisz jego wartość w zmiennej klucz_c. Używać ord() aby uzyskać wartość Unicode znaku i użyć chr() aby uzyskać znak reprezentujący określoną wartość.

Dołącz tę wartość do listy. Połącz każdy element listy z pustym łańcuchem i użyj kodować() metoda, aby zwrócić wersję łańcucha zakodowaną w utf-8. The base64.urlsafe_b64encode() metoda koduje to wejście i zastępuje - przez + i _ przez /.

pokKodować(kluczowa wiadomość):
enk = []

Do I W zakres (len (wiadomość)):
klucz_c = klucz[i % długość (klucz)]
enc.append (chr((ord (wiadomość[i]) + ord (key_c)) % 256))

powrót base64.urlsafe_b64encode("".join (enc).encode()).decode()

Zdefiniuj funkcję Rozszyfrować() który akceptuje klucz do kodowania i dekodowania wraz z wiadomością. Zdefiniuj pustą listę i zdekoduj wiadomość. Iteruj do długości wiadomości i ustaw moduł operacji jako indeks i zapisz jego wartość w key_c. Dołącz znak dekodowania komunikatu ciągu Unicode, jak pokazano poniżej. Zwróć zdekodowany ciąg znaków.

pokRozszyfrować(kluczowa wiadomość):
grudzień = []
wiadomość = base64.urlsafe_b64decode (wiadomość).decode()

Do I W zakres (len (wiadomość)):
klucz_c = klucz[i % długość (klucz)]
dec.append (chr((256 + ord (message[i]) - ord (key_c)) % 256))

powrót"".dołącz (gr.)

Zdefiniuj funkcję Tryb() pobiera tryb wprowadzony przez użytkownika w widżecie Entry i wywołuje odpowiednią funkcję zgodnie z wyborem. W przypadku, gdy użytkownik nie wprowadzi prawidłowej odpowiedzi, wyświetl komunikat o błędzie.

pokTryb():
Jeśli (tryb.get() == 'MI'):
Result.set (Koduj (key.get(), Text.get()))
Elif (tryb.get() == 'D'):
Result.set (Dekodowanie (key.get(), Text.get()))
w przeciwnym razie:
zestaw wyników(„Nieprawidłowy tryb”)

Zdefiniuj funkcję Wyjście() zabić i zakończyć działanie tłumacza działającego w tle. Zdefiniuj funkcję Reset() w celu wyczyszczenia zawartości pola Entry.

pokWyjście():
root.destroy()

pokResetowanie():
zestaw tekstu("")
zestaw kluczy("")
tryb.ustaw("")
zestaw wyników("")

Zdefiniuj widgety Etykieta i Wpis dla wiadomości, klucza, trybu i tekstu. Określ okno nadrzędne, w którym chcesz je umieścić, styl czcionki, tekst i kolor tła. Ustaw także współrzędne, aby je uporządkować.

Etykieta (główny, czcionka=„Arial 17 pogrubiony”, tekst='Wiadomość',fg='czarny', bg="wodny").miejsce (x=60, y=100)
Wpis (główny, czcionka=„aria 15”, zmienna tekstowa=Tekst, bg='biały').miejsce (x=450, y=100)

Etykieta (główny, czcionka=„Arial 17 pogrubiony”, tekst='Klucz',fg='czarny', bg="wodny").miejsce (x=60, y=130)
Wpis (główny, czcionka=„aria 15”, zmienna tekstowa=klucz, bg='biały').miejsce (x=450, y=130)

Etykieta (główny, czcionka=„Arial 17 pogrubiony”, tekst=„Tryb (E-kodowanie, D-dekodowanie)”,fg='czarny', bg="wodny").miejsce (x=60, y=160)
Wpis (główny, czcionka=„aria 15”, zmienna tekstowa=tryb, bg='biały').miejsce (x=450, y=160)

Etykieta (główny, czcionka=„Arial 17 pogrubiony”, tekst='Tekst',fg='czarny', bg="wodny").miejsce (x=60, y=190)
Wpis (główny, czcionka=„Arial 15 pogrubiony”, zmienna tekstowa=Wynik, bg='biały').miejsce (x=450, y=190)

Podobnie zdefiniuj trzy przyciski, aby wyświetlić wynik, zresetować pola i zatrzymać program. Przyciski mają specjalny parametr zwany poleceniem, który przyjmuje funkcję i wykonuje ją po kliknięciu.

Przycisk (główny, czcionka=„Arial 15 pogrubiony”, tekst='Wynik', padx=2, bg='Jasny szary', polecenie=Tryb).miejsce (x=100, y=240)
Przycisk (główny, czcionka=„Arial 15 pogrubiony”, tekst='Resetowanie', szerokość=6, polecenie=Resetuj, bg='Zielony', padx=2).miejsce (x=300, y=240)
Przycisk (główny, czcionka=„Arial 15 pogrubiony”, tekst='Zatrzymywać się', szerokość=6, polecenie=Wyjdź, bg='Czerwony', padx=2, pada =2).miejsce (x=500, y=240)

The główna pętla() mówi Pythonowi, aby uruchomił pętlę zdarzeń Tkinter i nasłuchiwał zdarzeń (takich jak naciśnięcia przycisków), dopóki nie zamkniesz okna.

root.mainloop()

Koder / dekoder wiadomości w akcji

Po uruchomieniu programu program wyświetla okno, w którym należy wprowadzić wiadomość, klucz i tryb. Po wybraniu trybu kodowania za pomocą klucza 2009 komunikat Zrobić użytek z przemienia się w f8KRwpvCnlLChcKjwp5Sf8KW.

Podobnie, po skopiowaniu zakodowanej wiadomości i wklejeniu jej z powrotem do wejścia w celu zdekodowania z tym samym, otrzymasz z powrotem oryginalną wiadomość.

Cyberbezpieczeństwo za pomocą Pythona

Możesz używać Pythona do pisania skryptów, które automatyzują kontrole bezpieczeństwa, monitorują sieci i skanują w poszukiwaniu luk w zabezpieczeniach. Możesz go używać do tworzenia niezawodnych aplikacji, które wykorzystują uwierzytelnianie, aby zmniejszyć szanse atakującego na naruszenie twoich danych.

Eksperci ds. cyberbezpieczeństwa często używają języka Python do tworzenia zapór sieciowych aplikacji internetowych w celu monitorowania aplikacji. Mogą przeprowadzać analizę wykrywania zagrożeń przy użyciu uczenia maszynowego. Dzięki tej architekturze znacznie łatwiej jest tworzyć niestandardowe testy penetracyjne i weryfikować protokoły bezpieczeństwa.