Python cryptography -kirjaston yleiskatsaus
Ottakaa hazmat- ja korkean tason primitiivit käyttöön ja tutustukaa kirjaston rakenteeseen.
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 invalidAvainten 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.
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
- Python cryptography -kirjaston yleiskatsaus
- AES-GCM:n salaus ja salauksen purku Pythonissa
- RSA- ja ECDSA-avainparit Pythonissa
- Yleiset Python-kryptografian sudenkuopat ja turvalliset mallit