Inhoudsopgave:
- Stap 1: Het installatiebestand schrijven
- Stap 2: Het coderings-/decoderingsbestand
- Stap 3: Bediening van bestanden
Video: Python-beveiligingssoftware voor versleuteling/ontsleuteling: 3 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
In deze Instructable laat ik je zien hoe je met een eenvoudige Python je bestanden veilig kunt houden met behulp van industriestandaard AES.
Vereisten:
-Python 3.7
- PyAesCrypt-bibliotheek
- hashlib-bibliotheek
Als u deze bibliotheken niet heeft, kunt u deze eenvoudig installeren door te typen:
pip3 hashlib installeren
pip3 installeer PyAesCrypt
in de terminal (of CMD)
Deze zou je al moeten hebben:
- willekeurige bibliotheek
- os bibliotheek
- systeembibliotheek
Ik gebruik OS X, maar het zou niet zoveel moeten uitmaken, behalve de richting van de schuine strepen in de bestandspaden (OS X: /, Windows:)
Let op: door een storing worden de inkepingen in de code om de een of andere reden niet weergegeven. Er zullen dus geen inkepingen in de weergegeven code zijn, maar ze zijn aanwezig in de Python-bestanden die ik aan het einde heb bijgevoegd, en in de bijgevoegde afbeeldingen. Neem de code alleen niet rechtstreeks uit de weergegeven tekst, omdat deze niet werkt vanwege het ontbreken van inspringingen
Als u alle afhankelijkheden hebt geïnstalleerd, gaan we verder met stap 1.
Stap 1: Het installatiebestand schrijven
Een van de factoren die dit zo veilig maakt, is het gebruik van hashes om het wachtwoord te controleren. Het setup-bestand (ik noem de mijne setupsafe.py) gaat naar:
- Maak een map en dummy-bestanden voor het wachtwoord
- Stel het wachtwoord in
- Stel het bestandsnummer in
- Hash het wachtwoord
Allereerst gaan we onze afhankelijkheden importeren:
van sys import *
importeer os
willekeurig importeren
hashlib importeren
Vervolgens zullen we een map maken om de wachtwoord-hash en de dummy-bestanden te huisvesten:
probeer: zo niet os.path.exists('desktop/safesetup'):
os.mkdir('desktop/safesetup/')
behalve OSEror:
print("Fout bij aanmaken map")
Deze code maakt een map aan met de naam safesetup (tenzij deze al bestaat).
Hierna gaan we het wachtwoord instellen en een willekeurig getal tussen 1 en 100 genereren als onze manier om door de dummy-bestanden te navigeren:
globaal wachtwoordwachtwoord = argv[1].encode('utf-8')
n = willekeurig.randint(1, 101)
Nu we ons wachtwoord en ons bestandsnummer hebben, gaan we 99 dummy-bestanden maken in safesetup en één echt bestand dat onze wachtwoord-hash bevat:
voor x in bereik(101): if(x != n):
f = open(("desktop/safesetup/"+str(x)), "w+")
f.sluiten()
anders:
wachtwoord = hashlib.sha256(wachtwoord).hexdigest()
f = open(("desktop/safesetup/"+str(x)), "w+")
f.schrijf(wachtwoord)
f.sluiten()
print(n)
Het echte bestand heet wat voor geheel getal n dan ook is. Dit bestand bevat ons wachtwoord, nadat het is gehasht met behulp van het sha256-algoritme (dit hash-algoritme wordt veel gebruikt in cryptocurrencies, met name Bitcoin).
Onthoud wat n is (het wordt afgedrukt in de console), want het is net zo belangrijk als het wachtwoord.
Dat is alles wat we nodig hebben voor ons installatieprogramma, dus we gaan nu verder met het coderings-/decoderingsprogramma.
Stap 2: Het coderings-/decoderingsbestand
Het setup-gedeelte van het hoofdbestand importeert de afhankelijkheden, hasht het ingevoerde wachtwoord en haalt de echte wachtwoordhash op met behulp van het ingevoerde bestandsnummer.
Eerst de afhankelijkheden:
van sys import *import os
importeer pyAesCrypt
hashlib importeren
Vervolgens de hashing van het ingevoerde wachtwoord:
wachtwoord = argv[1].encode('utf-8')wachtwoord = hashlib.sha256(wachtwoord).hexdigest()
Eindelijk, het ophalen van het gehashte wachtwoord:
file_key = str(argv[2])hash = open(("desktop/safesetup/" + file_key), ("r+")).read()
Het tweede deel van het coderingsbestand vergelijkt de hashes, bepaalt de waarheid van de vergelijking en gebruikt de AESCrypt-pythonbibliotheek om uw bestand naar keuze te coderen of te decoderen. Dit is een vrij groot stuk code, maar ik zal het opsplitsen:
if(wachtwoord == hash): print("Wachtwoord geaccepteerd")
buffergrootte = 64 * 1024
operatie = str(input("Bent u bestanden aan het ophalen of versleutelen? (r of e) "))
if(bewerking == 'r'):
file_name = str(input("Op te halen bestand: "))
pyAesCrypt.decryptFile((bestandsnaam + ".aes"), bestandsnaam, wachtwoord, bufferSize)
os.remove((bestandsnaam + ".aes"))
elif(bewerking == 'e'):
file_name = str(input("Te versleutelen bestand: "))
pyAesCrypt.encryptFile(file_name, (file_name + ".aes"), wachtwoord, bufferSize)
os.remove(bestandsnaam)
anders:
print("Fout: Onjuiste invoer")
anders:
print("Toegang geweigerd")
De eerste if-instructie bepaalt of de gehashte wachtwoorden overeenkomen. Als dit het geval is, wordt u gevraagd of u bestanden wilt versleutelen of versleutelde bestanden wilt ophalen. Afhankelijk van uw invoer, zal het het verstrekte bestand coderen of decoderen. Wanneer u wordt gevraagd om de naam van het bestand op te geven, moet u ervoor zorgen dat u het pad opgeeft, tenzij het bestand zich in dezelfde map bevindt als het python-programma. Het programma verwijdert het bestand in de vorige staat, vervangt het door een versleuteld.aes-bestand, of decodeert het en vervangt het door het originele bestand.
In de toekomst zou ik dit kunnen bijwerken om gezichtsherkenning op te nemen met behulp van de Python OpenCV-bibliotheek, maar voorlopig zullen wachtwoorden moeten volstaan.
Stap 3: Bediening van bestanden
Volg deze stappen om het installatiebestand uit te voeren:
1. Typ de terminal in:
python3-directory/setupname.py-wachtwoord (directory, setupnaam en wachtwoord vervangen door hun respectieve waarden)
2. De terminal geeft uw bestandsnummer weer. Hou dit.
Volg deze stappen om het coderings-/decoderingsprogramma uit te voeren:
1. Typ de terminal in:
python3 directory/bestandsnaam.py wachtwoord bestandsnummer (waarbij directory, bestandsnaam, wachtwoord en bestandsnummer worden vervangen door hun respectieve waarden)
2. De terminal zal dan uw wachtwoord accepteren of weigeren. Indien afgewezen, probeer het opnieuw en zorg ervoor dat u de juiste waarden invoert. Nadat toegang is verleend, zal de terminal u vragen of u een bestand wilt versleutelen of ophalen. Om een bestand te versleutelen, typ e, en om een versleuteld bestand op te halen, typ r.
3. U wordt dan gevraagd om de bestandsnaam op te geven. Vergeet niet om de map van het bestand op te geven, evenals de naam en ook de bestandsextensie. Als u echter een bestand ontsleutelt, typt u niet het.aes-gedeelte van de extensie, omdat de code daarvoor zorgt.
4. Het programma codeert of decodeert vervolgens het verstrekte bestand en verwijdert het bestand in de vorige staat (waarbij het gecodeerde of gedecodeerde bestand behouden blijft).
Voila! Bedankt dat je zo ver in de instructable bent gekomen, ik weet dat het lezen van code-tutorials niet het meest vermakelijke is. De python-bestanden zijn ingesloten in deze stap, voor degenen onder u die dit een kans willen geven. Nogmaals bedankt voor het lezen en ik wens je veel succes bij je toekomstige coderingsactiviteiten.
Aanbevolen:
Installatie voor externe Bluetooth GPS-provider voor Android-apparaten: 8 stappen
Installatie voor externe Bluetooth GPS-provider voor Android-apparaten: deze instructable legt uit hoe u uw eigen externe Bluetooth-compatibele GPS voor uw telefoon kunt maken, wat dan ook voor ongeveer $ 10. Materiaallijst: NEO 6M U-blox GPSHC-05 bluetooth-module Kennis van interface Blutooth Low energy-modulesArdui
Idee voor doe-het-zelf-activiteit voor weerstations voor 12+ jaar: 4 stappen
Idee voor doe-het-zelf-weerstationactiviteit voor 12-plussers: in deze activiteit zullen deelnemers hun weerstation opzetten, de lucht in sturen en de opnames (licht, temperatuur, vochtigheid) in realtime volgen via de Blynk-app. Bovendien leert u hoe u de geregistreerde waarden publiceert
Systeem voor het bewaken van de luchtkwaliteit voor fijnstofverontreiniging: 4 stappen
Systeem voor monitoring van luchtkwaliteit voor fijnstofverontreiniging: INTRO: 1 In dit project laat ik zien hoe ik een deeltjesdetector bouw met dataweergave, databack-up op SD-kaart en IOT. Visueel geeft een neopixels ringdisplay de luchtkwaliteit aan. 2 Luchtkwaliteit is een steeds belangrijker zorg t
Relaisbord voor Arduino voor minder dan $8: 5 stappen
Relaisbord voor Arduino voor minder dan $8.: Hallo vrienden, vandaag ga ik je vertellen hoe je een relaisbord voor Arduino maakt voor minder dan $8. In dit circuit gaan we geen IC of transistor gebruiken. Dus laten we het doen
3.3V Mod voor ultrasone sensoren (bereid HC-SR04 voor 3.3V Logic op ESP32/ESP8266, Particle Photon, enz.): 4 stappen
3.3V Mod voor ultrasone sensoren (bereid HC-SR04 voor 3.3V Logic op ESP32/ESP8266, Particle Photon, enz.): TL;DR: Knip op de sensor het spoor naar de Echo-pin en sluit het opnieuw aan met een spanningsdeler (Echo trace -> 2.7kΩ -> Echo pin -> 4.7kΩ -> GND). Bewerken: Er is enige discussie geweest over de vraag of de ESP8266 daadwerkelijk 5V-tolerant is op GPIO in