Cryptology Academy · Oppitunti

Python cryptography -kirjaston yleiskatsaus

Ottakaa hazmat- ja korkean tason primitiivit käyttöön ja tutustukaa kirjaston rakenteeseen.

Oppitunti 1/412 vaihetta

Python cryptography -kirjaston yleiskatsaus on ilmainen Cryptology Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Cryptology Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cryptology Academy-kurssilla on yhteensä 4 oppituntia.

Miksi cryptography-kirjastoa käytetään?

Pythonin cryptography-kirjasto (PyCAn kehittämä) tarjoaa sekä korkean tason Fernet-rajapinnan että matalan tason hazmat-primitiivit. Se käyttää OpenSSL:ää ja on Pythonin yhteisön standardi tuotantotason kryptografiassa.

Asennus ja rakenne

Asennus: pip install cryptography. Kaksi tasoa: cryptography.fernet (turvallinen ja mielipiteitä ottava symmetrinen salaus) ja cryptography.hazmat.primitives (AES, RSA, EC, tiivisteet, HMAC — käyttäkää varoen).

Fernet: turvallinen symmetrinen salaus

Fernet käyttää AES-128-CBC:tä ja HMAC-SHA256:ta aikaleiman kanssa. Se huolehtii IV:n luonnista, täytöstä ja MAC-tunnisteesta automaattisesti. Se sopii erinomaisesti asetusten arvojen, tunnisteiden tai pienten tietolohkojen salaamiseen.

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-primitiivit: tiivisteet

Hazmat-taso tarjoaa SHA-2-, SHA-3- ja BLAKE2-tiivisteet sekä paljon muuta:

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-primitiivit: HMAC

HMAC viestien todentamiseen:

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

Avainten serialisointi

Serialisoikaa avaimet PEM- tai DER-muotoon tallennusta tai siirtoa varten:

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

Avainten lataaminen PEM-tiedostosta

Ladatkaa PEM-avain levyltä:

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

X.509-varmenteiden käsittely

Jäsentäkää TLS-varmenteita ja tarkastelkaa niiden tietoja:

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)

Satunnaisten tavujen luonti

Käyttäkää kryptografiseen satunnaisuuteen aina os.urandom-funktiota tai secrets-moduulia:

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)

Hazmat-rajapinnan sudenkuoppien välttäminen

Hazmat-rajapintaa kutsutaan nimellä "Hazardous Materials" syystä. Yleisiä virheitä ovat nonce-arvojen uudelleenkäyttö, ECB-tilan käyttäminen, todennustunnisteiden ohittaminen ja MAC-arvojen vertaaminen operaattorilla ==. Käyttäkää korkean tason rajapintoja aina, kun mahdollista.

Tietotesti

Mitä Fernet-salaus tarjoaa, mitä pelkkä AES-CBC ei tarjoa?

Oppitunnin yhteenveto

cryptography-kirjastossa on kaksi tasoa: turvallinen Fernet ja joustava hazmat. Käyttäkää Fernetiä symmetriseen salaukseen ja hazmat-tasoa AES-GCM:ään, RSA:han, ECDSA:han ja varmenteiden käsittelyyn. Käyttäkää avaimiin aina os.urandom-funktiota. Välttäkää hazmat-tason sudenkuopat ja suosikaa todennettuja salaustiloja.

Aloita maksutta

Opi Cryptology Academy tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
67
Oppitunnit
261

Usein kysytyt kysymykset

Onko oppitunti ”Python cryptography -kirjaston yleiskatsaus” ilmainen?

Kyllä – oppitunnin ”Python cryptography -kirjaston yleiskatsaus” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Cryptology Academy-kurssin, päivitä CoddyKit PROhon. Cryptology Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Python cryptography -kirjaston yleiskatsaus”?

Ottakaa hazmat- ja korkean tason primitiivit käyttöön ja tutustukaa kirjaston rakenteeseen. Harjoittelet Cryptology Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Cryptology Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Cryptology Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Python cryptography -kirjaston yleiskatsaus”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Cryptology Academy-oppitunnilla?

Kyllä. Jokainen Cryptology Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Python cryptography -kirjaston yleiskatsaus
  2. AES-GCM:n salaus ja salauksen purku Pythonissa
  3. RSA- ja ECDSA-avainparit Pythonissa
  4. Yleiset Python-kryptografian sudenkuopat ja turvalliset mallit
← Takaisin: Cryptology Academy