0Pricing
Cryptology Academy · บทเรียน

ภาพรวมไลบรารีการเข้ารหัสของ Python

ตั้งค่าองค์ประกอบระดับต่ำและระดับสูงแบบ hazmat พร้อมทำความเข้าใจโครงสร้างไลบรารี

ภาพรวมไลบรารีการเข้ารหัสของ Python เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงใช้ไลบรารี cryptography

ไลบรารี cryptography ของ Python ซึ่งพัฒนาโดย PyCA มีทั้งส่วนติดต่อระดับสูง Fernet และส่วนประกอบพื้นฐานระดับต่ำแบบ วัสดุอันตราย ไลบรารีนี้ครอบ OpenSSL และเป็นมาตรฐานของชุมชนสำหรับการใช้งานการเข้ารหัสจริงใน Python

การติดตั้งและโครงสร้าง

ติดตั้งด้วยคำสั่ง: pip install cryptography มีสองชั้น ได้แก่ cryptography.fernet (การเข้ารหัสสมมาตรที่ปลอดภัยและมีแนวทางการใช้งานชัดเจน) และ cryptography.hazmat.primitives (AES, RSA, EC, แฮช และ HMAC — ควรใช้งานด้วยความระมัดระวัง)

Fernet: การเข้ารหัสสมมาตรที่ปลอดภัย

Fernet ใช้ AES-128-CBC + HMAC-SHA256 พร้อมประทับเวลา โดยจัดการการสร้าง IV การเติมแพดดิ้ง และ MAC ให้อัตโนมัติ เหมาะอย่างยิ่งสำหรับการเข้ารหัสค่าการกำหนดค่า โทเค็น หรือข้อมูลก้อนเล็ก

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)

พื้นฐานระดับวัสดุอันตราย: แฮช

ชั้นวัสดุอันตรายมี SHA-2, SHA-3, BLAKE2 และอื่น ๆ ให้ใช้งาน:

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

พื้นฐานระดับวัสดุอันตราย: HMAC

HMAC สำหรับยืนยันความถูกต้องของข้อความ:

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

การทำให้กุญแจเป็นลำดับข้อมูล

ทำให้กุญแจเป็นลำดับข้อมูลในรูปแบบ PEM/DER เพื่อจัดเก็บหรือส่งต่อ:

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

การโหลดกุญแจจาก PEM

โหลดกุญแจ PEM จากดิสก์:

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

แยกวิเคราะห์และตรวจสอบใบรับรอง 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)

การสร้างไบต์แบบสุ่ม

ควรใช้ os.urandom หรือ 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)

การหลีกเลี่ยงข้อผิดพลาดของระดับวัสดุอันตราย

API ระดับวัสดุอันตรายถูกเรียกว่า "วัสดุอันตราย" ด้วยเหตุผลที่ชัดเจน ข้อผิดพลาดที่พบบ่อย ได้แก่ การใช้นอนซ์ซ้ำ การใช้โหมด ECB การข้ามแท็กยืนยันความถูกต้อง และการเปรียบเทียบ MAC ด้วย == ควรใช้ API ระดับสูงเมื่อทำได้

ตรวจสอบความรู้

การเข้ารหัส Fernet ให้สิ่งใดที่ AES-CBC แบบดิบเพียงอย่างเดียวไม่มี

สรุปบทเรียน

ไลบรารี cryptography มีสองชั้น ได้แก่ Fernet ที่ปลอดภัยและระดับวัสดุอันตรายที่ยืดหยุ่น ควรใช้ Fernet สำหรับการเข้ารหัสสมมาตร และใช้ระดับวัสดุอันตรายสำหรับ AES-GCM, RSA, ECDSA และการจัดการใบรับรอง ควรใช้ os.urandom สำหรับสร้างกุญแจเสมอ หลีกเลี่ยงข้อผิดพลาดของระดับวัสดุอันตราย — ควรเลือกโหมดที่มีการยืนยันความถูกต้อง

คำถามที่พบบ่อย

บทเรียน “ภาพรวมไลบรารีการเข้ารหัสของ Python” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ภาพรวมไลบรารีการเข้ารหัสของ Python” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ภาพรวมไลบรารีการเข้ารหัสของ Python”

ตั้งค่าองค์ประกอบระดับต่ำและระดับสูงแบบ hazmat พร้อมทำความเข้าใจโครงสร้างไลบรารี คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “ภาพรวมไลบรารีการเข้ารหัสของ Python” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม

ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ภาพรวมไลบรารีการเข้ารหัสของ Python
  2. เข้ารหัสและถอดรหัส AES-GCM ใน Python
  3. คู่คีย์ RSA และ ECDSA ใน Python
  4. ข้อผิดพลาดที่พบบ่อยในการเข้ารหัสด้วย Python และรูปแบบที่ปลอดภัย
← กลับไปที่ Cryptology Academy