0Pricing
Cryptology Academy · Lekcja

Przegląd biblioteki cryptography dla języka Python

Skonfigurować prymitywy hazmat i wysokiego poziomu oraz zrozumieć strukturę biblioteki

Przegląd biblioteki cryptography dla języka Python to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Dlaczego warto używać biblioteki cryptography?

Biblioteka Python cryptography (rozwijana przez PyCA) udostępnia zarówno wysokopoziomowy interfejs Fernet, jak i niskopoziomowe prymitywy hazmat. Opakowuje OpenSSL i jest standardem społeczności w zakresie produkcyjnej kryptografii w Pythonie.

Instalacja i struktura

Zainstaluj za pomocą: pip install cryptography. Dwie warstwy: cryptography.fernet (bezpieczne, oparte na określonych założeniach szyfrowanie symetryczne) oraz cryptography.hazmat.primitives (AES, RSA, EC, funkcje skrótu, HMAC — używaj ostrożnie).

Fernet: bezpieczne szyfrowanie symetryczne

Fernet używa AES-128-CBC + HMAC-SHA256 ze znacznikiem czasu. Automatycznie obsługuje generowanie IV, dopełnianie i MAC. Doskonale nadaje się do szyfrowania wartości konfiguracyjnych, tokenów lub niewielkich danych binarnych.

from cryptography.fernet import Fernet

# Generate a URL-safe base64-encoded 32-byte key
key = Fernet.generate_key()
f = Fernet(key)

token = f.encrypt(b"my secret data")
print("Encrypted:", token[:40], "...")

plain = f.decrypt(token)
print("Decrypted:", plain)

Prymitywy hazmat: funkcje skrótu

Warstwa hazmat udostępnia SHA-2, SHA-3, BLAKE2 i inne funkcje skrótu:

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.backends import default_backend

digest = hashes.Hash(hashes.SHA256(), backend=default_backend())
digest.update(b"Hello, ")
digest.update(b"world!")
result = digest.finalize()
print("SHA-256:", result.hex())

Prymitywy hazmat: HMAC

HMAC do uwierzytelniania wiadomości:

from cryptography.hazmat.primitives import hmac, hashes
import os

key = os.urandom(32)
h = hmac.HMAC(key, hashes.SHA256())
h.update(b"authenticated message")
signature = h.finalize()
print("HMAC-SHA256:", signature.hex())

# Verify
h2 = hmac.HMAC(key, hashes.SHA256())
h2.update(b"authenticated message")
h2.verify(signature)  # raises if invalid

Serializacja kluczy

Serializuj klucze do formatów PEM/DER na potrzeby przechowywania lub przesyłania:

from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization

private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
pem = private_key.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.PKCS8,
    encryption_algorithm=serialization.BestAvailableEncryption(b"passphrase")
)
print(pem[:60])

Wczytywanie kluczy z PEM

Wczytaj klucz PEM z dysku:

from cryptography.hazmat.primitives.serialization import load_pem_private_key

with open("private_key.pem", "rb") as f:
    pem_data = f.read()

key = load_pem_private_key(pem_data, password=b"passphrase")
print("Key loaded, size:", key.key_size, "bits")

Obsługa certyfikatów X.509

Analizuj i sprawdzaj certyfikaty TLS:

from cryptography import x509
import datetime

with open("cert.pem", "rb") as f:
    cert = x509.load_pem_x509_certificate(f.read())

print("Subject:", cert.subject)
print("Issuer:", cert.issuer)
print("Not valid after:", cert.not_valid_after_utc)
print("Serial:", cert.serial_number)

Generowanie losowych bajtów

Do generowania kryptograficznie losowych wartości zawsze używaj os.urandom lub secrets:

import os, secrets

# Cryptographically secure 32-byte key
key = os.urandom(32)
print("Random key:", key.hex())

# secrets module: URL-safe token
token = secrets.token_urlsafe(32)
print("URL-safe token:", token)

Unikanie pułapek warstwy hazmat

Interfejs hazmat nazywa się „Hazardous Materials” nie bez powodu. Typowe błędy to ponowne używanie nonce, używanie trybu ECB, pomijanie znaczników uwierzytelniania oraz porównywanie MAC za pomocą ==. Jeśli to możliwe, używaj interfejsów wysokopoziomowych.

Sprawdzenie wiedzy

Co zapewnia szyfrowanie Fernet, czego nie zapewnia samo szyfrowanie AES-CBC?

Podsumowanie lekcji

Biblioteka cryptography ma dwie warstwy: bezpieczną warstwę Fernet i elastyczną warstwę hazmat. Używaj Fernet do szyfrowania symetrycznego, a hazmat do AES-GCM, RSA, ECDSA i obsługi certyfikatów. Do kluczy zawsze używaj os.urandom. Unikaj pułapek warstwy hazmat — preferuj tryby uwierzytelniane.

Często zadawane pytania

Czy lekcja „Przegląd biblioteki cryptography dla języka Python” jest bezpłatna?

Tak — pełny tekst „Przegląd biblioteki cryptography dla języka Python” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Przegląd biblioteki cryptography dla języka Python”?

Skonfigurować prymitywy hazmat i wysokiego poziomu oraz zrozumieć strukturę biblioteki Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Przegląd biblioteki cryptography dla języka Python”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Przegląd biblioteki cryptography dla języka Python
  2. Szyfrowanie i odszyfrowywanie AES-GCM w Pythonie
  3. Pary kluczy RSA i ECDSA w Pythonie
  4. Typowe pułapki kryptograficzne w Pythonie i bezpieczne wzorce
← Powrót do Cryptology Academy