Kazalo:

Programska oprema za šifriranje/dešifriranje varnosti Python: 3 koraki
Programska oprema za šifriranje/dešifriranje varnosti Python: 3 koraki

Video: Programska oprema za šifriranje/dešifriranje varnosti Python: 3 koraki

Video: Programska oprema za šifriranje/dešifriranje varnosti Python: 3 koraki
Video: CS50 2013 - Week 9, continued 2024, November
Anonim
Programska oprema za šifriranje/dešifriranje varnosti Python
Programska oprema za šifriranje/dešifriranje varnosti Python
Programska oprema za šifriranje/dešifriranje varnosti Python
Programska oprema za šifriranje/dešifriranje varnosti Python

V tem navodilu vam bom pokazal, kako lahko z nekaj preprostim Pythonom zaščitite svoje datoteke z uporabo industrijskega standarda AES.

Zahteve:

- Python 3.7

- knjižnica PyAesCrypt

- knjižnica hashlib

Če teh knjižnic nimate, jih lahko preprosto namestite tako, da vnesete:

pip3 namestite hashlib

pip3 namestite PyAesCrypt

v terminalu (ali CMD)

Morali bi že imeti te:

- naključna knjižnica

- knjižnica os

- sistemska knjižnica

Uporabljam OS X, vendar to ne bi smelo biti preveč pomembno, razen smeri poševnic v datotekah (OS X: /, Windows: )

Prosimo, upoštevajte: Zaradi nekaterih napak se vdolbine v kodi iz nekega razloga ne prikažejo. Posledično v prikazani kodi ne bo vdolbin, vendar so prisotne v datotekah Python, ki sem jih priložil na koncu, in v priloženih slikah. Kode ne vzemite neposredno iz prikazanega besedila, ker zaradi pomanjkanja vdolbin ne bo delovalo

Če imate nameščene vse odvisnosti, pojdimo na 1. korak.

1. korak: Pisanje namestitvene datoteke

Pisanje namestitvene datoteke
Pisanje namestitvene datoteke
Pisanje namestitvene datoteke
Pisanje namestitvene datoteke
Pisanje namestitvene datoteke
Pisanje namestitvene datoteke
Pisanje namestitvene datoteke
Pisanje namestitvene datoteke

Eden od dejavnikov, ki to naredijo tako varno, je uporaba razpršilcev za preverjanje gesla. Namestitvena datoteka (kličem svojo setupsafe.py) bo:

- Ustvarite mapo in lažne datoteke za geslo

- Nastavite geslo

- Nastavite številko datoteke

- Razpršite geslo

Najprej bomo uvozili naše odvisnosti:

iz sys uvoza *

uvoz os

uvoz naključno

uvoz hashlib

Nato bomo ustvarili mapo za shranjevanje gesla gesla in lažnih datotek:

poskusite: če ne os.path.exists ('namizje/varna nastavitev'):

os.mkdir ('namizje/varna nastavitev/')

razen OSError:

print ("Napaka pri ustvarjanju mape")

Ta koda bo ustvarila mapo, imenovano safesetup (razen če že obstaja).

Po tem bomo nastavili geslo in ustvarili naključno število med 1 in 100 za naš način krmarjenja po lažnih datotekah:

globalno geslo = geslo = argv [1].encode ('utf-8')

n = random.randint (1, 101)

Zdaj, ko imamo geslo in številko datoteke, bomo v varni nastavitvi ustvarili 99 lažnih datotek in eno pravo datoteko, ki bo vsebovala naš geslo gesla:

za x v razponu (101): if (x! = n):

f = odprto (("namizje/safesetup/"+str (x)), "w+")

f.close ()

drugače:

geslo = hashlib.sha256 (geslo).hexdigest ()

f = odprto (("namizje/safesetup/"+str (x)), "w+")

f.write (geslo)

f.close ()

natisni (n)

Prava datoteka se imenuje ne glede na celo število n. Ta datoteka vsebuje naše geslo, potem ko je razpršeno z algoritmom sha256 (ta algoritem razpršitve se pogosto uporablja v kriptovalutah, predvsem v bitcoinu).

Zapomnite si, kaj je n (natisnjeno bo v konzoli), saj je enako pomembno kot geslo.

To je vse, kar potrebujemo za naš namestitveni program, zato bomo prešli na program za šifriranje/dešifriranje.

Korak: Datoteka za šifriranje/dešifriranje

Datoteka za šifriranje/dešifriranje
Datoteka za šifriranje/dešifriranje
Datoteka za šifriranje/dešifriranje
Datoteka za šifriranje/dešifriranje
Datoteka za šifriranje/dešifriranje
Datoteka za šifriranje/dešifriranje

Oddelek za nastavitev glavne datoteke uvozi odvisnosti, razprši vneseno geslo in z uporabo vnesene številke datoteke prikliče pravo geslo gesla.

Prvič, odvisnosti:

iz sys import *import os

uvoz pyAesCrypt

uvoz hashlib

Nato razpršitev vnesenega gesla:

geslo = argv [1].encode ('utf-8') geslo = hashlib.sha256 (geslo).hexdigest ()

Nazadnje, iskanje zgoščenega gesla:

file_key = str (argv [2]) hash = open (("namizje/safesetup/" + file_key), ("r +")). read ()

Drugi razdelek šifrirne datoteke primerja razpršitve, določa resničnost primerjave in uporablja knjižnico python AESCrypt za šifriranje ali dešifriranje vaše izbrane datoteke. To je precej velik del kode, vendar ga bom razčlenil:

if (geslo == hash): print ("Geslo sprejeto")

bufferSize = 64 * 1024

operation = str (input ("Ali pridobivate ali šifrirate datoteke? (r ali e)"))

if (operacija == 'r'):

file_name = str (input ("Datoteka za pridobivanje:"))

pyAesCrypt.decryptFile ((ime_datoteke + ".aes"), ime_datoteke, geslo, bufferSize)

os.remove ((ime_datoteke + ".aes"))

elif (operacija == 'e'):

file_name = str (input ("Datoteka za šifriranje:"))

pyAesCrypt.encryptFile (ime_datoteke, (ime_datoteke + ".aes"), geslo, velikost medpomnilnika)

os.remove (ime_datoteke)

drugače:

print ("Napaka: napačen vnos")

drugače:

print ("Dostop zavrnjen")

Prvi stavek if določa, ali se zgoščena gesla ujemajo. Če se to zgodi, vas nato vpraša, ali želite šifrirati datoteke ali pridobiti šifrirane datoteke. Odvisno od vnosa bo šifriral ali dešifriral priloženo datoteko. Ko boste pozvani, da navedete ime datoteke, ne pozabite določiti poti, razen če je datoteka v istem imeniku kot program python. Program izbriše datoteko v prejšnjem stanju in jo nadomesti s šifrirano datoteko.aes ali pa jo dešifrira in zamenja z izvirno datoteko.

V prihodnosti bi to lahko posodobil tako, da bo vključeval prepoznavanje obrazov z uporabo knjižnice Python OpenCV, vendar bodo za zdaj morala zadostovati gesla.

3. korak: delovanje datotek

Če želite zagnati namestitveno datoteko, sledite tem korakom:

1. Vnesite terminal:

imenik/geslo za namestitev python3/setupname.py (zamenjava imenika, nastavitvenega imena in gesla z ustreznimi vrednostmi)

2. Terminal bo izpisal številko vaše datoteke. Obdrži to.

Če želite zagnati program za šifriranje/dešifriranje, sledite tem korakom:

1. Vnesite terminal:

imenik/ime datoteke python3 številka datoteke geslo (imenik, ime datoteke, geslo in številka datoteke nadomestite z ustreznimi vrednostmi)

2. Terminal bo nato sprejel ali zavrnil vaše geslo. Če je zavrnjeno, poskusite znova in se prepričajte, da vnesete prave vrednosti. Ko je dostop odobren, vas bo terminal vprašal, ali želite datoteko šifrirati ali datoteko pridobiti. Za šifriranje datoteke vnesite e in pridobite šifrirano datoteko r.

3. Nato boste morali vnesti ime datoteke. Ne pozabite navesti imenika datoteke, imena in razširitve datoteke. Če pa dešifrirate datoteko, ne vnesite dela razširitve.aes, saj to upošteva koda.

4. Program nato šifrira ali dešifrira priloženo datoteko in datoteko izbriše v prejšnjem stanju (ohrani šifrirano ali dešifrirano datoteko).

Voila! Hvala, ker ste tako daleč prišli do pouka, vem, da branje vadnic s kodo ni najbolj zabavna stvar. Datoteke python so priložene temu koraku, za tiste, ki želite to poskusiti. Še enkrat hvala za branje in želim vam vso srečo pri prihodnjih prizadevanjih za kodiranje.

Priporočena: