-
Introducere în securitatea și criptografia în Python
- Prezentarea conceptelor de bază: hash-uri, criptare simetrică și asimetrică
- Scenarii de utilizare pentru securitatea și criptografia în Python
- Bibliotecile disponibile pentru securitate și criptografie în Python
-
Biblioteca hashlib: Funcții de hash și digests
- Funcții de hash disponibile în hashlib: MD5, SHA-1, SHA-256, SHA-512, etc.
- Cum să calculați un hash pentru un șir de caractere sau un fișier
- Verificarea integrității datelor cu ajutorul funcțiilor de hash
-
Compararea hash-urilor și securitatea parolelor
- Stocarea parolelor într-o formă sigură
- Folosirea bibliotecii crypt pentru a compara hash-uri
- Utilizarea salt-urilor și a algoritmilor de hash lent pentru a proteja parolele
-
Criptarea simetrică și asimetrică în Python
- Prezentarea bibliotecilor pycrypto, cryptography și altele
- Utilizarea criptării simetrice pentru a proteja datele cu o cheie secretă
- Utilizarea criptării asimetrice pentru a proteja datele cu o pereche de chei publică/privată
-
Semnături digitale și autentificarea datelor
- Conceptul de semnătură digitală și rolul său în securitate
- Generarea și verificarea semnăturilor digitale cu ajutorul criptării asimetrice
- Implementarea unui sistem de autentificare bazat pe semnături digitale
-
Exemple și scenarii de utilizare în aplicații reale
- Securizarea comunicațiilor între clienți și servere
- Protejarea fișierelor și a informațiilor confidențiale
- Implementarea unor mecanisme de autentificare și autorizare robuste
Exemple și exerciții pentru fiecare subpunct:
Exemplu: Calcularea unui hash SHA-256 cu hashlib
import hashlib
data = "Un exemplu de șir de caractere"
hash_object = hashlib.sha256(data.encode())
hash_digest = hash_object.hexdigest()
print(f"Hash SHA-256 pentru '{data}': {hash_digest}")
Exercițiu:
Creați un script Python care să calculeze hash-ul MD5, SHA-1 și SHA-512 pentru un șir de caractere introdus de utilizator.
Exemplu: Verificarea integrității unui fișier cu ajutorul funcțiilor de hash
import hashlib
def calculate_file_hash(file_path, hash_algorithm):
with open(file_path, "rb") as file:
file_contents = file.read()
hash_object = hash_algorithm(file_contents)
return hash_object.hexdigest()
file_path = "path/to/your/file"
hash_digest = calculate_file_hash(file_path, hashlib.sha256)
print(f"Hash SHA-256 pentru '{file_path}': {hash_digest}")
Exercițiu:
Creați un script Python care să compare hash-urile a două fișiere pentru a verifica dacă acestea sunt identice sau nu.
Exemplu: Compararea hash-urilor parolelor cu crypt
import crypt
def check_password(password, stored_hash):
salt = stored_hash[:2]
password_hash = crypt.crypt(password, salt)
return password_hash == stored_hash
password = "parola_secreta"
hash_to_compare = "abCDeFGHIJKLMNOP"
if check_password(password, hash_to_compare):
print("Parola este corectă.")
else:
print("Parola este greșită.")
Exercițiu:
Creați un script Python care să ceară utilizatorului să introducă o parolă și să verifice dacă aceasta corespunde cu un hash prestabilit.
Exemplu: Criptarea și decriptarea datelor cu criptare simetrică
from Crypto.Cipher import AES
from Crypto.Random importget_random_bytes
key = get_random_bytes(16) # Cheia secretă de 128 de biți
cipher = AES.new(key, AES.MODE_ECB) # Crearea obiectului cipher cu modul ECB
# Criptarea datelor
plaintext = b"Un mesaj secret"
ciphertext = cipher.encrypt(plaintext)
print(f"Textul criptat: {ciphertext}")
# Decriptarea datelor
decrypted_text = cipher.decrypt(ciphertext)
print(f"Textul decriptat: {decrypted_text}")
Exercițiu:
Creați un script Python care să cripteze și să decripteze un șir de caractere utilizând criptarea simetrică și o cheie secretă.
Exemplu: Generarea și verificarea semnăturilor digitale cu criptare asimetrică
from Crypto.PublicKey import RSA
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256
# Generarea unei perechi de chei RSA
key = RSA.generate(2048)
public_key = key.publickey()
# Semnarea unui mesaj
message = b"Un mesaj important"
hash_object = SHA256.new(message)
signature = pkcs1_15.new(key).sign(hash_object)
# Verificarea semnăturii
try:
pkcs1_15.new(public_key).verify(hash_object, signature)
print("Semnătura este validă.")
except (ValueError, TypeError):
print("Semnătura nu este validă.")
Exercițiu:
Creați un script Python care să genereze o pereche de chei RSA, să semneze un mesaj și să verifice semnătura cu cheia publică.
Rezumat:
În această lecție, am discutat despre securitatea și criptografia în Python, și am explorat bibliotecile hashlib și crypt. Am învățat cum să calculăm hash-uri pentru șiruri de caractere și fișiere, să verificăm integritatea datelor și să securizăm stocarea parolelor. De asemenea, am investigat criptarea simetrică și asimetrică, precum și semnăturile digitale și autentificarea datelor.
Prin aplicarea tehnicilor prezentate în această lecție, puteți crea aplicații Python mai sigure și robuste, care protejează datele și informațiile confidențiale, precum și să implementați mecanisme de autentificare și autorizare eficiente.