التشفير في Rust باستخدام مكتبة RustCrypto

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو RustCrypto؟

RustCrypto هو نظام بيئي للمكتبات التشفيرية للغة Rust، يوفر تطبيقات لخوارزميات التشفير الحديثة، التجزئة، المصادقة، والتوقيعات الرقمية. يشمل وحدات لـ AES، ChaCha20، SHA-2/3، ECDSA، Ed25519، Argon2 وبروتوكولات أخرى. المكتبات مكتوبة بلغة Rust النقية مع التركيز على أمان الذاكرة، الأداء، وتدقيق الكود.

لماذا نحتاج RustCrypto؟

على عكس Python، حيث يتطلب التشفير غالباً استدعاءات لامتدادات C (PyCryptodome, cryptography)، يقدم RustCrypto تطبيقاً أصلياً بدون تكاليف إضافية. هذا أمر بالغ الأهمية للأنظمة المدمجة، WebAssembly، الخوادم عالية التحميل، والتطبيقات التي تكون فيها الحماية من هجمات القنوات الجانبية مهمة. يُستخدم RustCrypto بنشاط في مشاريع البلوكشين (Solana, Polkadot)، تطبيقات المراسلة (Signal)، وحلول VPN.

التثبيت

أضف الكريتات المطلوبة إلى ملف Cargo.toml. مثال لـ AES-GCM و SHA-256:

[dependencies]aes-gcm = "0.10"sha2 = "0.10"rand = "0.8"

الوظائف الرئيسية

  • التشفير المتماثل: AES-GCM، ChaCha20-Poly1305، Twofish
  • التجزئة: SHA-2، SHA-3، BLAKE2، RIPEMD
  • التشفير غير المتماثل: ECDSA، Ed25519، X25519، Ristretto255
  • وظائف المفاتيح: Argon2، scrypt، PBKDF2
  • التوقيعات الرقمية: Ed25519، ECDSA (secp256k1, P-256)

مثال كود بلغة Rust

use aes_gcm::{Aes256Gcm, Key, Nonce};use aes_gcm::aead::{Aead, KeyInit, OsRng};use sha2::{Sha256, Digest};

fn main() { // 1. تجزئة SHA-256 let mut hasher = Sha256::new(); hasher.update(b"hello world"); let hash = hasher.finalize(); println!("SHA-256: {:x}", hash);

// 2. تشفير AES-GCM let key = Aes256Gcm::generate_key(&mut OsRng); let cipher = Aes256Gcm::new(&key); let nonce = Nonce::from_slice(b"unique nonce"); // 12 بايت let ciphertext = cipher.encrypt(nonce, b"secret data".as_ref()) .expect("encryption failure"); println!("Ciphertext: {:?}", ciphertext);

// 3. فك التشفير let plaintext = cipher.decrypt(nonce, ciphertext.as_ref()) .expect("decryption failure"); println!("Decrypted: {:?}", plaintext);}

متى تستخدم RustCrypto

المكتبة لا غنى عنها للمشاريع التي تتطلب أداءً عالياً وأماناً على مستوى الذاكرة: محافظ العملات الرقمية، شبكات P2P، تخزين كلمات المرور الآمن، تدقيق السجلات، تطبيقات WebAssembly. كما أن RustCrypto مناسبة لاستبدال OpenSSL في الخدمات المصغرة بلغة Rust.

لمطوري Python الذين يتعلمون Rust، ستكون RustCrypto جسراً: واجهة API بديهية، وغياب GIL يسمح بتحقيق تسريع بمقدار 10-100x للعمليات التشفيرية.

توصيات