
مجموعة من دوال التجزئة التشفيرية مكتوبة بلغة Rust النقية
[![Project Chat][chat-image]][chat-link] [![dependency status][deps-image]][deps-link] ![Apache2/MIT licensed][license-image]
مجموعة من [دوال التجزئة التشفيرية][1] المكتوبة بلغة Rust الصرفة.
تقع جميع الخوارزميات في حزم (crates) منفصلة ويتم تنفيذها باستخدام السمات (traits) من حزمة [digest].
تتوفر أمثلة على الاستخدام في وثائق digest ووثائق حزم تنفيذ دوال التجزئة.
بالإضافة إلى ذلك، لا تتطلب جميع الحزم المكتبة القياسية (أي أنها قادرة على العمل في بيئة no_std) ويمكن
استخدامها بسهولة في البرمجة على الأنظمة العارية (bare-metal) أو WebAssembly عبر تعطيل الميزات الافتراضية للحزمة.
للاطلاع على مجموعة من [دوال الإخراج القابلة للتوسيع (XOFs)][XOF]، راجع مستودع [RustCrypto/XOFs].
ملاحظة: بالنسبة للتطبيقات الجديدة، أو عندما لا يكون التوافق مع معايير أخرى قائمة مصدر قلق أساسيًا، نوصي بشدة باستخدام إما [BLAKE3][blake3] أو SHA-2 أو SHA-3.
| الخوارزمية | الحزمة (Crate) | Crates.io | التوثيق | MSRV | [الأمان] |
|---|---|---|---|---|---|
| [Ascon-Hash256] | [ascon‑hash256] | 1.85 | 💚 | ||
| [bash-hash][STB 34.101.77-2020] | [bash‑hash] | 1.85 | 💚 | ||
| تجزئة [BelT] | [belt‑hash] | 1.85 | 💚 | ||
| [BLAKE2] | [blake2] | 1.85 | 💚 | ||
| [FSB] | [fsb] | 1.85 | 💚 | ||
| [GOST R 34.11-94][GOST94] | [gost94] | 1.85 | 💛 | ||
| [Grøstl] (Groestl) | [groestl] | 1.85 | 💚 | ||
| [JH] | [jh] | 1.85 | 💚 | ||
| [Kupyna] | [kupyna] | 1.85 | 💚 | ||
| [MD2] | [md2] | 1.85 | 💔 | ||
| [MD4] | [md4] | 1.85 | 💔 | ||
| [MD5] | [md5] ❗ | 1.85 | 💔 | ||
| [RIPEMD] | [ripemd] | 1.85 | 💚 | ||
| [SHA-1] | [sha1] | 1.85 | 💔 | ||
| [SHA-1 Checked] | [sha1-checked] | 1.85 | 💛 | ||
| [SHA-2] | [sha2] | 1.88 | 💚 | ||
| [SHA-3] (Keccak) | [sha3] | 1.85 | 💚 | ||
| [SHABAL] | [shabal] | 1.85 | 💚 | ||
| [Skein] | [skein] | 1.85 | 💚 | ||
| [SM3] (OSCCA GM/T 0004-2012) | [sm3] | 1.85 | 💚 | ||
| [Streebog] (GOST R 34.11-2012) | [streebog] | 1.85 | 💛 | ||
| [Tiger] | [tiger] | 1.85 | 💛 | ||
| [Whirlpool] | [whirlpool] | 1.85 | 💚 |
ملاحظة: تُنفّذ حزمة [blake3] سمات digest التي تستخدمها بقية دوال التجزئة في هذا المستودع، لكنها تُصان من فريق BLAKE3.
يصف ما يلي تصنيفات مستوى الأمان المرتبطة بكل دالة تجزئة (أي الخوارزميات، وليس التنفيذ المحدد):
| القلب | الوصف |
|---|---|
| 💚 | لا توجد هجمات ناجحة معروفة |
| 💛 | كسر نظري: أمان أقل من المُدّعى |
| 💔 | هجوم مُثبت عمليًا: تجنّبه إن أمكن |
راجع صفحة Security على ويكيبيديا لمزيد من المعلومات.
كلما أمكن، تُنشر الحزم تحت الاسم نفسه الذي يحمله مجلد الحزمة.
رفض مالكو md5 المشاركة في هذا المشروع.
لا تُنفّذ هذه الحزمة سمات [digest]، لذا فهي غير قابلة للتشغيل البيني مع منظومة RustCrypto.
لهذا السبب ننشر تنفيذنا لـ MD5 باسم md-5 ونضع عليه علامة ❗.
لاحظ أن المكتبة نفسها مسماة md5، أي داخل عبارات use ينبغي أن تستخدم md5 وليس md_5.
جميع الحزم في هذا المستودع مرخّصة بموجب أي من التالي
حسب اختيارك.
ما لم تنص صراحةً على خلاف ذلك، فإن أي مساهمة تُقدّمها عمدًا لإدراجها في العمل، كما هو معرّف في ترخيص Apache-2.0، ستكون مرخّصة بشكل مزدوج كما هو مذكور أعلاه، دون أي شروط أو أحكام إضافية.