Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
W tej instrukcji pokażę, jak za pomocą prostego Pythona możesz zabezpieczyć swoje pliki przy użyciu standardowego AES.
Wymagania:
-Pyton 3.7
- Biblioteka PyAesCrypt
- biblioteka hashlib
Jeśli nie masz tych bibliotek, możesz łatwo zainstalować, wpisując:
pip3 zainstaluj hashlib
pip3 zainstaluj PyAesCrypt
w terminalu (lub CMD)
Powinieneś już mieć te:
- losowa biblioteka
- biblioteka systemu operacyjnego
- biblioteka systemowa
Używam OS X, ale nie powinno to mieć większego znaczenia, z wyjątkiem kierunku ukośników w ścieżkach plików (OS X: /, Windows:)
Uwaga: z powodu usterki wcięcia w kodzie z jakiegoś powodu nie są wyświetlane. W związku z tym w wyświetlanym kodzie nie będzie żadnych wcięć, jednak są one obecne w załączonych na końcu plikach Pythona oraz na załączonych obrazkach. Po prostu nie bierz kodu bezpośrednio z wyświetlanego tekstu, ponieważ nie zadziała z powodu braku wcięć
Jeśli masz zainstalowane wszystkie zależności, przejdźmy do kroku 1.
Krok 1: Pisanie pliku instalacyjnego
Jednym z czynników, który sprawia, że jest to tak bezpieczne, jest użycie skrótów do sprawdzania hasła. Plik instalacyjny (nazywam mój setupsafe.py) będzie:
- Utwórz folder i atrapy plików dla hasła
- Ustaw hasło
-Ustaw numer pliku
- Zahaszuj hasło
Najpierw zaimportujemy nasze zależności:
z importu sys *
importuj system
importuj losowo
importuj hashlib
Następnie utworzymy folder do przechowywania skrótu hasła i fikcyjnych plików:
spróbuj: jeśli nie os.path.exists('desktop/safesetup'):
os.mkdir('pulpit/safesetup/')
z wyjątkiem OSError:
print("Błąd tworzenia folderu")
Ten kod utworzy folder o nazwie safesetup (chyba że już istnieje).
Następnie ustawimy hasło i wygenerujemy losową liczbę od 1 do 100, aby nawigować po fikcyjnych plikach:
hasło globalne hasło = argv[1].encode('utf-8')
n = losowo.randint(1, 101)
Teraz, gdy mamy nasze hasło i nasz numer pliku, utworzymy 99 fikcyjnych plików wewnątrz safesetup i jeden prawdziwy plik, który będzie zawierał nasz skrót hasła:
dla x w zakresie(101): if(x != n):
f = open(("pulpit/safesetup/"+str(x)), "w+")
f.zamknij()
w przeciwnym razie:
hasło = hashlib.sha256(hasło).hexdigest()
f = open(("pulpit/safesetup/"+str(x)), "w+")
f.write(hasło)
f.zamknij()
drukuj(n)
Prawdziwy plik nazywa się dowolną liczbą całkowitą n. Ten plik zawiera nasze hasło, po zaszyfrowaniu algorytmem sha256 (ten algorytm skrótu jest szeroko stosowany w kryptowalutach, w szczególności Bitcoin).
Pamiętaj, co to jest n (zostanie wydrukowane w konsoli), ponieważ jest tak samo ważne jak hasło.
To wszystko, czego potrzebujemy do naszego programu instalacyjnego, więc przejdziemy teraz do programu szyfrującego/deszyfrującego.
Krok 2: Plik szyfrowania/odszyfrowywania
Sekcja konfiguracji głównego pliku importuje zależności, haszuje wprowadzone hasło i pobiera prawdziwy skrót hasła przy użyciu wprowadzonego numeru pliku.
Po pierwsze, zależności:
z importu sys * importuj z systemu operacyjnego
importuj pyAesCrypt
importuj hashlib
Następnie hashowanie wprowadzonego hasła:
hasło = argv[1].encode('utf-8')hasło = hashlib.sha256(hasło).hexdigest()
Na koniec odzyskiwanie zaszyfrowanego hasła:
file_key = str(argv[2])hash = open(("pulpit/safesetup/" + file_key), ("r+")).read()
Druga sekcja pliku szyfrowania porównuje skróty, określa prawdziwość porównania i używa biblioteki Pythona AESCrypt do zaszyfrowania lub odszyfrowania wybranego pliku. To dość spory kawałek kodu, ale opiszę go:
if(hasło == hash): print("Hasło akceptowane")
rozmiar bufora = 64 * 1024
operacja = str(input("Czy pobierasz lub szyfrujesz pliki? (r lub e) "))
if(operacja == 'r'):
nazwa_pliku = str(input("Plik do pobrania: "))
pyAesCrypt.decryptFile((nazwa_pliku + ".aes"), nazwa_pliku, hasło, rozmiar bufora)
os.remove((nazwa_pliku + ".aes"))
elif(operacja == 'e'):
nazwa_pliku = str(input("Plik do zaszyfrowania: "))
pyAesCrypt.encryptFile(nazwa_pliku, (nazwa_pliku + ".aes"), hasło, rozmiar bufora)
os.remove(nazwa_pliku)
w przeciwnym razie:
print("Błąd: Nieprawidłowe dane wejściowe")
w przeciwnym razie:
print("Odmowa dostępu")
Pierwsza instrukcja if określa, czy zaszyfrowane hasła są zgodne. Jeśli tak, to następnie pyta, czy chcesz zaszyfrować pliki lub odzyskać zaszyfrowane pliki. W zależności od wprowadzonych danych zaszyfruje lub odszyfruje dostarczony plik. Po wyświetleniu monitu o podanie nazwy pliku upewnij się, że podałeś ścieżkę, chyba że plik znajduje się w tym samym katalogu, co program Python. Program usuwa plik w jego poprzednim stanie, zastępując go zaszyfrowanym plikiem.aes lub odszyfrowując go i zastępując oryginalnym plikiem.
W przyszłości może zaktualizuję to, aby uwzględnić rozpoznawanie twarzy za pomocą biblioteki Python OpenCV, ale na razie hasła będą musiały wystarczyć.
Krok 3: Działanie plików
Aby uruchomić plik instalacyjny, wykonaj następujące kroki:
1. Wpisz w terminalu:
python3 directory/setupname.py hasło (zastępując katalog, setupname i hasło odpowiednimi wartościami)
2. Terminal wyświetli numer twojego pliku. Trzymaj to.
Aby uruchomić program szyfrujący/deszyfrujący, wykonaj następujące kroki:
1. Wpisz w terminalu:
python3 directory/filename.py hasło numer pliku (zastępując katalog, nazwę pliku, hasło i numer pliku odpowiednimi wartościami)
2. Terminal zaakceptuje lub odrzuci Twoje hasło. W przypadku odrzucenia spróbuj ponownie i upewnij się, że wpisujesz prawidłowe wartości. Po przyznaniu dostępu terminal zapyta, czy chcesz zaszyfrować plik, czy pobrać plik. Aby zaszyfrować plik, wpisz e, a aby pobrać zaszyfrowany plik, wpisz r.
3. Następnie zostaniesz poproszony o podanie nazwy pliku. Pamiętaj, aby podać katalog pliku oraz nazwę, a także rozszerzenie pliku. Jeśli jednak odszyfrujesz plik, nie wpisuj części.aes rozszerzenia, ponieważ uwzględnia to kod.
4. Program następnie szyfruje lub odszyfrowuje dostarczony plik i usuwa plik w jego poprzednim stanie (zachowując zaszyfrowany lub odszyfrowany plik).
Voila! Dzięki za zrobienie tego tak daleko w instruktażu, wiem, że czytanie samouczków kodu nie jest najbardziej zabawną rzeczą. Pliki Pythona są zawarte w tym kroku, dla tych z Was, którzy chcą dać temu szansę. Jeszcze raz dziękuję za przeczytanie i życzę powodzenia w przyszłych programach.