Cryptology Academy · leksjon

Oversikt over Python cryptography-biblioteket

Sett opp hazmat- og høynivåprimitive, og forstå bibliotekstrukturen.

Leksjon 1 av 412 trinn

Oversikt over Python cryptography-biblioteket er en gratis leksjon i Cryptology Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cryptology Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cryptology Academy inneholder totalt 4 leksjoner.

Hvorfor bruke cryptography-biblioteket

Python-biblioteket cryptography (fra PyCA) tilbyr både et høynivågrensesnitt for Fernet og lavnivåprimitiver for hazmat. Det pakker inn OpenSSL og er fellesskapets standard for kryptografi i Python i produksjon.

Installasjon og struktur

Installer med: pip install cryptography. To lag: cryptography.fernet (sikker, meningsstyrt symmetrisk kryptering) og cryptography.hazmat.primitives (AES, RSA, EC, hash-funksjoner, HMAC – bruk med forsiktighet).

Fernet: Sikker symmetrisk kryptering

Fernet bruker AES-128-CBC + HMAC-SHA256 med et tidsstempel. Det håndterer generering av IV, utfylling og MAC automatisk. Perfekt for kryptering av konfigurasjonsverdier, tokener eller små datablokker.

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)

Hazmat-primitiver: Hash-funksjoner

Hazmat-laget tilbyr SHA-2, SHA-3, BLAKE2 med mer:

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())

Hazmat-primitiver: HMAC

HMAC for meldingsautentisering:

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

Serialisering av nøkler

Serialiser nøkler til PEM/DER for lagring eller overføring:

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])

Laste inn nøkler fra PEM

Last inn en PEM-nøkkel fra disk:

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")

Håndtering av X.509-sertifikater

Analyser og inspiser TLS-sertifikater:

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)

Generering av tilfeldige byte

Bruk alltid os.urandom eller secrets for kryptografisk tilfeldighet:

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)

Unngå fallgruver med hazmat

Hazmat-API-et kalles "Hazardous Materials" av en grunn. Vanlige feil er å gjenbruke noncer, bruke ECB-modus, hoppe over autentiseringstagger og sammenligne MAC-er med ==. Bruk høynivå-API-er når det er mulig.

Kunnskapstest

Hva tilbyr Fernet-kryptering som ren AES-CBC ikke gjør?

Oppsummering av leksjonen

cryptography-biblioteket har to lag: det sikre Fernet-laget og det fleksible hazmat-laget. Bruk Fernet til symmetrisk kryptering og hazmat til AES-GCM, RSA, ECDSA og sertifikathåndtering. Bruk alltid os.urandom til nøkler. Unngå fallgruvene ved hazmat – foretrekk autentiserte moduser.

Gratis å komme i gang

Lær deg Cryptology Academy med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
67
Leksjoner
261

Ofte stilte spørsmål

Er leksjonen «Oversikt over Python cryptography-biblioteket» gratis?

Ja – hele teksten i «Oversikt over Python cryptography-biblioteket» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Cryptology Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Cryptology Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Oversikt over Python cryptography-biblioteket»?

Sett opp hazmat- og høynivåprimitive, og forstå bibliotekstrukturen. Du øver på Cryptology Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Cryptology Academy?

Ingen tidligere erfaring er nødvendig. Cryptology Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Oversikt over Python cryptography-biblioteket»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Cryptology Academy-leksjonen?

Ja. Alle Cryptology Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Oversikt over Python cryptography-biblioteket
  2. Krypter og dekrypter med AES-GCM i Python
  3. RSA- og ECDSA-nøkkelpar i Python
  4. Vanlige kryptofeller i Python og sikre mønstre
← Tilbake til Cryptology Academy