Kodax

أساسيات التشفير — أمن الشبكات

أساسيات التشفير (Cryptography)

ما هو التشفير؟

تحويل البيانات إلى صيغة غير مقروءة لحمايتها.

أنواع التشفير

1. التشفير المتماثل (Symmetric)

- مفتاح واحد للتشفير وفك التشفير

- سريع ولكن توزيع المفتاح صعب

- أمثلة: AES, DES, 3DES

2. التشفير غير المتماثل (Asymmetric)

- مفتاحان: عام (public) وخاص (private)

- أبطأ ولكن أكثر أماناً

- أمثلة: RSA, ECC

3. دوال الهاش (Hashing)

- تحويل أحادي الاتجاه

- للتحقق من سلامة البيانات

- أمثلة: MD5 ⚠️, SHA-256, bcrypt

استخدامات التشفير

- 🔐 حماية كلمات المرور (hashing)

- 📧 تشفير الرسائل

- 🌐 HTTPS (TLS/SSL)

- 💳 المعاملات المالية

- 📱 تشفير الهواتف

قواعد مهمة

1. لا تخترع تشفيرك الخاص!

2. استخدم مكتبات موثوقة

3. MD5 و SHA-1 لم تعد آمنة للتشفير

4. أطوال المفاتيح المناسبة:

- AES: 256 bit

- RSA: 2048+ bit

# أمثلة على التشفير في Python
import hashlib
from cryptography.fernet import Fernet
import bcrypt

# ===== 1. Hashing مع SHA-256 =====
def hash_sha256(data):
    """تشفير نص باستخدام SHA-256"""
    return hashlib.sha256(data.encode()).hexdigest()

# مثال
password = "MySecretPassword123"
hashed = hash_sha256(password)
print(f"SHA-256: {hashed}")

# ===== 2. تشفير كلمات المرور مع bcrypt =====
def hash_password(password):
    """تشفير كلمة مرور بشكل آمن"""
    salt = bcrypt.gensalt(rounds=12)
    return bcrypt.hashpw(password.encode(), salt)

def verify_password(password, hashed):
    """التحقق من كلمة المرور"""
    return bcrypt.checkpw(password.encode(), hashed)

# مثال
hashed_pw = hash_password("MyPassword123")
print(f"bcrypt: {hashed_pw}")
print(f"صحيح: {verify_password('MyPassword123', hashed_pw)}")
print(f"خاطئ: {verify_password('WrongPassword', hashed_pw)}")

# ===== 3. تشفير متماثل مع Fernet =====
def encrypt_message(message, key):
    """تشفير رسالة"""
    f = Fernet(key)
    return f.encrypt(message.encode())

def decrypt_message(encrypted, key):
    """فك تشفير رسالة"""
    f = Fernet(key)
    return f.decrypt(encrypted).decode()

# توليد مفتاح
key = Fernet.generate_key()
print(f"المفتاح: {key}")

# تشفير وفك تشفير
message = "رسالة سرية جداً!"
encrypted = encrypt_message(message, key)
print(f"مشفر: {encrypted}")
decrypted = decrypt_message(encrypted, key)
print(f"أصلي: {decrypted}")
اختبر فهمك