Dziś pragnę zaprezentować moją aplikację wykonaną na potrzeby zaliczenia jednego z przedmiotów na studiach. Aplikacja szyfruje wskazany plik za pomocą operacji XOR (alternatywa wykluczająca). Dla uproszczenia w mojej aplikacji klucz szyfrujący może mieć wartość od 0 do 255 włącznie. Zarówno szyfrowanie i deszyfrowanie wykonywane jest za pomocą tej samej funkcji z tym samym kluczem. Inaczej mówiąc wystarczy dwa razy przepuścić dany plik przez aplikacje wpisując ten sam klucz a otrzymamy to samo. Pojedyncze uruchomienie aplikacji na danym pliku, zaszyfruje ten plik zaś później uruchomienie tej samej aplikacji na uprzednio zaszyfrowanym pliku i wprowadzenie dokładnie tego samego klucza spowoduje jego odszyfrowanie.
Python lubi C++
Szyfrowanie zostało zaimplementowane w C++. Następnie kod został skompilowany jako biblioteka DLL. Taką bibliotekę z powodzeniem można używać w oprogramoaniu pisanym w Pythonie. Dodatkowo w samym pythonie jest implementacja tej samej funkcji szyfrującej. Dublowałem te funkcje by porównać czas szyfrowania.C++ nokautuje Pythona
Poniższy screen nie pozostawia suchej nitki na Pythonie.Jak widzimy szyfrowanie zaimplementowane w C++ jest prawie 3 razy szybsze od tego w pythonie. Nie jest to przypadek. Python nie jest aż tak wydajnym językiem. Sekret "wydajności" pythona polega na tym, że język ten można bardzo łatwo łączyć z różnymi bibliotekami. Konwencja jest taka że te bardzo krytyczne algorytmy są pisane np w C czy C++ i jest wystawiany wrapper do pythona by z poziomu tego języka można było w bardzo prosty sposób używać tych bibliotek.
GUI w Pythonie
Reasumując sam algorytm szyfrowania został wykonany w C++ zaś Python to głównie GUI stworzone z wykorzystaniem biblioteki Tkinter. Do tego celu python nadaje się wyśmienicie.
Podsumowanie
Aplikacja powstała wyłącznie w celach edukacyjnych. Sposób szyfrowania, oraz liczne uproszczenia w implementacji powodują, że aplikacja ta nie nadaje się do szyfrowania naprawdę ważnych i poufnych danych. Nie zalecam nikomu szyfrować nią jakiś poufnych danych.
Czynnikiem motywującym mnie do napisania tej aplikacji był fakt połączenia moich dwóch ulubionych języków w jeden finalny program.
Kod całej aplikacji dostępny jest tutaj.
Brak komentarzy:
Prześlij komentarz