نظرة عامة على مكتبة Python cryptography
أعدّ البدائيات عالية المستوى وhazmat وافهم بنية المكتبة
نظرة عامة على مكتبة Python cryptography درس مجاني في Cryptology Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cryptology Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cryptology Academy 4 دروس في المجموع.
لماذا نستخدم مكتبة cryptography؟
توفر مكتبة cryptography في Python (من PyCA) واجهة Fernet عالية المستوى وبدائيات hazmat منخفضة المستوى. وهي تغلّف 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)بدائيات Hazmat: دوال التجزئة
توفر طبقة hazmat دوال 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())بدائيات Hazmat: 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)تجنب مشكلات Hazmat
سُمّيت واجهة hazmat باسم "المواد الخطرة" لسبب وجيه. ومن الأخطاء الشائعة: إعادة استخدام القيم nonce، واستخدام نمط ECB، وتجاوز علامات المصادقة، ومقارنة MAC باستخدام ==. استخدموا الواجهات عالية المستوى متى أمكن.
اختبار المعرفة
ما الذي يوفره تشفير Fernet ولا يوفره AES-CBC الخام وحده؟
مراجعة الدرس
تحتوي مكتبة cryptography على طبقتين: Fernet الآمن وhazmat المرن. استخدموا Fernet للتشفير المتماثل، وhazmat مع AES-GCM وRSA وECDSA والتعامل مع الشهادات. استخدموا دائمًا os.urandom للمفاتيح. وتجنبوا مشكلات hazmat — وفضّلوا الأنماط الموثّقة.
الأسئلة الشائعة
هل درس «نظرة عامة على مكتبة Python cryptography» مجاني؟
نعم — نص درس «نظرة عامة على مكتبة Python cryptography» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cryptology Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cryptology Academy 4 دروس في المجموع.
ماذا ستتعلم في «نظرة عامة على مكتبة Python cryptography»؟
أعدّ البدائيات عالية المستوى وhazmat وافهم بنية المكتبة تتمرن على Cryptology Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cryptology Academy؟
لا تُشترط خبرة سابقة. Cryptology Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «نظرة عامة على مكتبة Python cryptography»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cryptology Academy هذا؟
نعم. كل درس في Cryptology Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- نظرة عامة على مكتبة Python cryptography
- تشفير AES-GCM وفك تشفيره في Python
- أزواج مفاتيح RSA وECDSA في Python
- أخطاء التشفير الشائعة في Python والأنماط الآمنة