
مكتبة Rust خالصة للتشفير بالمفتاح العام RSA: توليد المفاتيح، تشفير/فك تشفير PKCS#1 v1.5 وOAEP، توقيعات PSS، بالإضافة إلى استيراد/تصدير المفاتيح.
تطبيق RSA محمول مكتوب بلغة Rust الخالصة.
use rsa::{Pkcs1v15Encrypt, RsaPrivateKey, RsaPublicKey};
let mut rng = rand::rng();
let bits = 2048;
let priv_key = RsaPrivateKey::new(&mut rng, bits).expect("failed to generate a key");
let pub_key = RsaPublicKey::from(&priv_key);
// Encrypt
let data = b"hello world";
let enc_data = pub_key.encrypt(&mut rng, Pkcs1v15Encrypt, &data[..]).expect("failed to encrypt");
assert_ne!(&data[..], &enc_data[..]);
// Decrypt
let dec_data = priv_key.decrypt(Pkcs1v15Encrypt, &enc_data).expect("failed to decrypt");
assert_eq!(&data[..], &dec_data[..]);
ملاحظة: إذا واجهت بطئًا غير معتاد في وقت توليد المفاتيح أثناء استخدام
RsaPrivateKey::new، يمكنك محاولة الترجمة في وضع الإصدار (release mode) أو إضافة ما يلي إلى ملفCargo.toml. يكون توليد المفاتيح أسرع بكثير عند البناء بمستويات تحسين أعلى، ولكن هذا سيزيد من وقت الترجمة قليلًا.[profile.debug] opt-level = 3
حاليًا في المرحلة 1 (v) 🚧
ستكون هناك ثلاث مراحل قبل أن يمكن إصدار 1.0 🚢.
خضعت هذه الحزمة لـتدقيق أمني واحد بواسطة Include Security، ولم يُعثر إلا على ملاحظة بسيطة واحدة تمت معالجتها منذ ذلك الحين.
راجع [القضايا الأمنية المفتوحة] في متتبع القضايا الخاص بنا للمشاكل الأخرى المعروفة.
من الجدير بالذكر أن [الأس لا المعياري لا يعمل بزمن ثابت]،
لكن تباين التوقيت يتم إخفاؤه باستخدام [التعمية العشوائية]، وهي تقنية
شائعة الاستخدام. هذه الحزمة معرضة لـ[هجوم مارفن] الذي قد يمكن
مهاجمًا على الشبكة من استعادة المفتاح الخاص (انظر RUSTSEC-2023-0071).
يمكنك متابعة عملنا على تخفيف هذه المشكلة في #390.
تدعم هذه الحزمة Rust 1.85 أو أحدث.
في المستقبل قد يتغير MSRV، ولكن سيتم ذلك عبر رفع إصدار ثانوي (minor version bump).
مرخصة بموجب أحد التراخيص التالية
حسب اختيارك.
ما لم تنص صراحةً على خلاف ذلك، فإن أي مساهمة تُقدَّم عمدًا لإدراجها في العمل بواسطتك، كما هو محدد في رخصة Apache-2.0، ستكون مرخصة بشكل مزدوج كما هو مذكور أعلاه، دون أي شروط أو قيود إضافية.