Ikhtisar Pustaka Kriptografi Python
Siapkan primitif hazmat dan tingkat tinggi; pahami struktur pustaka.
Ikhtisar Pustaka Kriptografi Python adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cryptology Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cryptology Academy mencakup 4 pelajaran total.
Mengapa Menggunakan Pustaka cryptography?
Pustaka Python cryptography (oleh PyCA) menyediakan antarmuka Fernet tingkat tinggi dan primitif hazmat tingkat rendah. Pustaka ini membungkus OpenSSL dan menjadi standar komunitas untuk kriptografi produksi di Python.
Instalasi dan Struktur
Instal: pip install cryptography. Dua lapisan: cryptography.fernet (enkripsi simetris yang aman dan memiliki opini desain tertentu) serta cryptography.hazmat.primitives (AES, RSA, EC, fungsi hash, HMAC — gunakan dengan hati-hati).
Fernet: Enkripsi Simetris yang Aman
Fernet menggunakan AES-128-CBC + HMAC-SHA256 dengan stempel waktu. Fernet menangani pembuatan IV, padding, dan MAC secara otomatis. Sangat cocok untuk mengenkripsi nilai konfigurasi, token, atau blob kecil.
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)Primitif Hazmat: Fungsi Hash
Lapisan hazmat menyediakan SHA-2, SHA-3, BLAKE2, dan lainnya:
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())Primitif Hazmat: HMAC
HMAC untuk autentikasi pesan:
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 invalidSerialisasi Kunci
Serialisasikan kunci ke PEM/DER untuk penyimpanan atau transmisi:
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])Memuat Kunci dari PEM
Muat kunci PEM dari 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")Penanganan Sertifikat X.509
Uraikan dan periksa sertifikat 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)Pembuatan Byte Acak
Selalu gunakan os.urandom atau secrets untuk keacakan kriptografis:
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)Menghindari Kesalahan Hazmat
API hazmat disebut "Bahan Berbahaya" karena suatu alasan. Kesalahan umum meliputi penggunaan ulang nonce, penggunaan mode ECB, melewatkan tag autentikasi, serta membandingkan MAC dengan ==. Jika memungkinkan, gunakan API tingkat tinggi.
Pemeriksaan Pengetahuan
Apa yang disediakan enkripsi Fernet yang tidak disediakan oleh AES-CBC mentah?
Ringkasan Pelajaran
Pustaka cryptography memiliki dua lapisan: Fernet yang aman dan hazmat yang fleksibel. Gunakan Fernet untuk enkripsi simetris, serta hazmat untuk AES-GCM, RSA, ECDSA, dan penanganan sertifikat. Selalu gunakan os.urandom untuk kunci. Hindari kesalahan hazmat — utamakan mode terautentikasi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Ikhtisar Pustaka Kriptografi Python” gratis?
Ya — teks lengkap “Ikhtisar Pustaka Kriptografi Python” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cryptology Academy, upgrade ke CoddyKit PRO. Kursus Cryptology Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Ikhtisar Pustaka Kriptografi Python”?
Siapkan primitif hazmat dan tingkat tinggi; pahami struktur pustaka. Kamu berlatih Cryptology Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Cryptology Academy?
Tidak diperlukan pengalaman sebelumnya. Cryptology Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Ikhtisar Pustaka Kriptografi Python” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Cryptology Academy ini?
Ya. Setiap pelajaran Cryptology Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Ikhtisar Pustaka Kriptografi Python
- Enkripsi & Dekripsi AES-GCM dalam Python
- Pasangan Kunci RSA & ECDSA dalam Python
- Kesalahan Umum Kripto Python & Pola Aman