Skip to content

About

Interactive bilingual desktop app for learning classical and modern cryptography step by step.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

CryptoEdu Pro

منصة تعليمية تفاعلية لفهم التشفير خطوة بخطوة

Python GUI Educational Status

CryptoEdu Pro هو تطبيق مكتبي تعليمي يساعد الطلاب والمطورين على تجربة خوارزميات التشفير، ومشاهدة النتائج، وفهم الكود والعمليات الرياضية خلف كل خوارزمية من خلال واجهة رسومية حديثة تدعم العربية والإنجليزية.

نظرة عامة · المزايا · التثبيت والتشغيل · الخوارزميات · البنية · خطة التطوير


نظرة عامة

تم تصميم المشروع ليكون مساحة تعليمية عملية بدلًا من الاكتفاء بالشرح النظري. يختار المستخدم خوارزمية، يدخل النص والمفتاح المناسب، ثم يستطيع:

  • تشفير النص أو فك تشفيره.
  • نسخ النتيجة أو نقلها إلى خانة الإدخال.
  • مشاهدة تحليل بصري وتدريجي للعملية.
  • الاطلاع على الكود الكامل للخوارزمية.
  • قراءة شرح مبسط لكل جزء من الكود.
  • تغيير اللغة والثيم أثناء الاستخدام.
  • تجربة أمثلة جاهزة من خلال Quick Test.

تنبيه مهم: هذا المشروع تعليمي. الخوارزميات الموجودة هنا مطبقة من الصفر بهدف الفهم والتجربة، ولا ينبغي استخدامها لحماية بيانات حقيقية أو في أنظمة إنتاجية.

تنبيه تعليمي: لا تستخدم هذا المشروع لتشفير كلمات المرور أو الملفات أو البيانات الحساسة. للاستخدام العملي، اعتمد على مكتبات تشفير موثوقة ومراجعة أمنيًا.


المزايا

تجربة تعليمية تفاعلية

  • واجهة رسومية مبنية باستخدام CustomTkinter.
  • تبويب للتشفير العملي وتبويب لشرح الكود.
  • تحليل خطوة بخطوة لبعض الخوارزميات.
  • عرض الصيغ الرياضية والمصفوفات والمراحل الوسيطة عند توفرها.
  • أمثلة تشغيل جاهزة لكل خوارزمية.

دعم اللغتين

  • العربية كلغة افتراضية.
  • الإنجليزية.
  • معالجة أولية لمشكلة اتجاه النص المختلط RTL/LTR.
  • واجهة قابلة للتبديل أثناء تشغيل التطبيق.

تخصيص الواجهة

  • ثيم Midnight.
  • ثيم Ocean.
  • ثيم Purple Haze.
  • ثيم Emerald.
  • سجل مختصر للعمليات الأخيرة.
  • عداد الحروف والكلمات.
  • ألوان منفصلة للتشفير وفك التشفير والحالات المختلفة.

الخوارزميات

الخوارزمية النوع الهدف التعليمي شكل الإدخال الأساسي
Caesar استبدال بسيط فهم الإزاحة الأبجدية نص + رقم الإزاحة
Affine استبدال رياضي فهم الدالة (m × x + k) mod 26 نص + m + k
Vigenère استبدال متعدد الأبجديات فهم المفتاح الدوري نص + كلمة مفتاحية
Playfair استبدال أزواج فهم مصفوفة 5×5 نص + كلمة مفتاحية
Hill تشفير بالمصفوفات فهم ضرب المصفوفات modulo 26 نص + مصفوفة 2×2
Diffie-Hellman تبادل مفاتيح فهم إنشاء مفتاح مشترك p وg وa وb
RSA تشفير غير متماثل فهم المفاتيح العامة والخاصة p وq وe
S-DES تشفير كتلي مبسط فهم الجولات والمفاتيح الفرعية كتلة 8-bit + مفتاح 10-bit
DES تشفير كتلي دراسة Feistel والجولات والمبدلات كتلة 64-bit + مفتاح 64-bit

ملاحظات على نطاق الدعم

  • التنفيذ الحالي موجه أساسًا للنصوص والأبجديات الإنجليزية في الخوارزميات الكلاسيكية.
  • واجهة التطبيق تدعم العربية، لكن هذا لا يعني أن كل خوارزمية تدعم تشفير الأحرف العربية رياضيًا.
  • بعض الخوارزميات، مثل S-DES وDES، تتطلب إدخالًا ثنائيًا بطول محدد.
  • RSA وDES هنا لأغراض تعليمية، وليس كبديل لمكتبات التشفير الموثوقة.

المتطلبات

  • Python 3.10 أو أحدث.
  • Tkinter.
  • نظام Windows أو Linux أو macOS يدعم Tkinter.
  • الاعتماديات الموجودة في requirements.txt.

الاعتماديات الرئيسية

customtkinter>=5.2.0
pyperclip

التثبيت والتشغيل

1. استنساخ المشروع

git clone https://github.com/Dev-KAIDO/CryptoEdu-Pro.git
cd CryptoEdu-Pro

2. إنشاء بيئة افتراضية — موصى به

Windows

python -m venv .venv
.venv\Scripts\activate

Linux / macOS

python3 -m venv .venv
source .venv/bin/activate

3. تثبيت الاعتماديات

python -m pip install --upgrade pip
python -m pip install -r requirements.txt

4. تشغيل التطبيق

python main.py

في Linux قد تحتاج إلى تثبيت حزمة Tkinter من مدير الحزم، مثل python3-tk.


الاستخدام السريع

  1. شغّل التطبيق.
  2. اختر الخوارزمية من القائمة الجانبية.
  3. أدخل النص أو الكتلة الثنائية المطلوبة.
  4. أدخل المفتاح أو القيم الرياضية المطلوبة.
  5. اضغط تشفير أو فك التشفير.
  6. استخدم التحليل لمشاهدة خطوات العملية.
  7. انتقل إلى تبويب شرح الكود لمراجعة التنفيذ والمثال.
  8. استخدم Quick Test لتعبئة مثال جاهز تلقائيًا.

أمثلة سريعة

Caesar

Input:  HELLO WORLD
Key:    3
Output: KHOOR ZRUOG

Vigenère

Input:  ATTACKATDAWN
Key:    LEMON
Output: LXFOPVEFRNHR

RSA التعليمي

p = 61
q = 53
e = 17

ينشئ التطبيق القيم الرياضية اللازمة داخليًا ويعرض النص المشفر على شكل أرقام مفصولة بفواصل.

S-DES

Plaintext: 10101101
Key:       1010110011
Result:    00111100

DES

يعمل التطبيق على كتلة ثنائية بطول 64 بت ومفتاح ثنائي بطول 64 بت، ويعرض خطوات التبديل والجولات في صفحة التحليل.


بنية المشروع

CryptoEdu-Pro/
├── main.py                 # نقطة التشغيل وواجهة التطبيق الرئيسية
├── core/
│   ├── algorithms.py       # تنفيذ الخوارزميات ومواد الشرح
│   ├── app_state.py        # الحالة العامة القابلة للتغيير دون Widgets
│   ├── controller.py       # إدارة Worker والعمليات والنتائج
│   ├── registry.py         # السجل المركزي لتعريف الخوارزميات وحقولها
│   ├── education.py        # أمثلة الكود والشرح التعليمي للواجهة
│   ├── service.py          # طبقة تنفيذ مستقلة عن واجهة المستخدم
│   └── textutils.py        # أدوات معالجة اتجاه النص المختلط
├── ui/
│   ├── styles.py           # الألوان والخطوط والأحجام
│   ├── translations.py     # النصوص العربية والإنجليزية
│   ├── widgets.py          # مكونات واجهة قابلة لإعادة الاستخدام
│   ├── analysis_view.py    # صفحة التحليل الرسومي وشرح خطوات الخوارزميات
│   ├── key_fields.py       # إنشاء وقراءة حقول مفاتيح الخوارزميات
│   ├── code_view.py        # تبويب الكود الكامل والشرح والتلوين
│   ├── crypto_view.py      # تبويب التشفير وبطاقات الإدخال والنتائج
│   ├── sidebar_view.py     # الشريط الجانبي والإعدادات والسجل
│   ├── language_manager.py # اختيار اللغة والترجمة واتجاه RTL
│   └── theme_manager.py    # تعريفات الثيمات واختيارها والتحقق منها
├── tests/
│   ├── test_algorithms.py  # اختبارات الرجوع والتحقق من المدخلات
│   ├── test_controller.py   # اختبارات دورة حياة العمليات الخلفية
│   ├── test_language_manager.py # اختبارات إدارة اللغات والترجمة
│   ├── test_service.py      # اختبارات طبقة تنفيذ العمليات
│   ├── test_theme_manager.py # اختبارات إدارة الثيمات
│   ├── test_registry.py     # اختبارات عقد Registry والتوافق
│   └── test_ui_smoke.py     # اختبار واجهة اختياري عبر Xvfb
├── tools/
│   ├── benchmark.py         # قياس أداء الخوارزميات دون اعتماديات إضافية
│   └── legacy/              # سكربتات الإصلاح التاريخية غير المطلوبة للتشغيل
├── .github/workflows/ci.yml # فحص الجودة والاختبارات والبناء
├── pyproject.toml           # إعداد Ruff واكتشاف الاختبارات وبيانات الحزمة
├── CHANGELOG.md             # سجل الإصدارات والتغييرات
├── LICENSE                  # ترخيص MIT
├── CryptoEdu.spec          # إعداد بناء PyInstaller
├── cryptoedu.ico           # أيقونة التطبيق
├── requirements.txt        # الاعتماديات
└── README.md               # توثيق المشروع

مخطط المكونات

flowchart LR
    A[واجهة CryptoEdu Pro] --> B[SidebarViewMixin\nاللغة والثيم والسجل]
    A --> C[CryptoViewMixin\nتبويب التشفير العملي]
    A --> D[تبويب شرح الكود والتحليل]
    C --> E[CryptoOperationService]
    E --> R[Algorithm Registry]
    R --> K[Key Fields and Cipher Menu]
    A --> S[AppState]
    A --> Ctl[CryptoController]
    Ctl --> E
    E --> F[CryptoCore]
    F --> G[Classical Ciphers]
    F --> H[RSA / Diffie-Hellman]
    F --> I[S-DES / DES]
    D --> F
    A --> J[السجل و Quick Test]
Loading

ملاحظة عن ملفات الإصلاح القديمة

تم تنظيم ملفات الإصلاح التاريخية التي استُخدمت أثناء التطوير داخل tools/legacy/. هذه الملفات غير مطلوبة لتشغيل التطبيق، ولا ينبغي استخدامها على نسخة جديدة من المشروع.


بناء نسخة تنفيذية

يوجد ملف إعداد مبدئي لـ PyInstaller باسم:

CryptoEdu.spec

بعد تثبيت PyInstaller يمكن تجربة البناء باستخدام:

python -m pip install pyinstaller
pyinstaller CryptoEdu.spec

ستظهر الملفات الناتجة عادة داخل مجلدي build/ وdist/.

يفضل اختبار النسخة التنفيذية على جهاز نظيف قبل توزيعها، والتأكد من وجود الأيقونة والموارد والمكونات المطلوبة.


الجودة والحالة الحالية

المشروع يعمل كنسخة تعليمية قابلة للتجربة، وقد تم اختبار تشغيل الواجهة وتجربة الخوارزميات الأساسية. ومع ذلك، ما زالت هناك أعمال تحسين مهمة قبل اعتباره إصدارًا مستقرًا أو جاهزًا للاستخدام العام.

أبرز الأعمال القادمة

  • تحسين التحقق من المدخلات ورسائل الأخطاء.
  • تحديد أو توسيع دعم الأبجدية العربية داخل الخوارزميات.
  • إضافة اختبارات تلقائية مستقلة.
  • تنظيف ملفات Python المؤقتة والملفات الناتجة من البناء.
  • تقسيم main.py إلى وحدات أصغر وأكثر قابلية للصيانة.
  • تحسين توثيق الأمثلة والنتائج.
  • إضافة GitHub Actions للفحص والبناء.
  • تحسين الوصولية وتجربة الاستخدام.

الإصلاحات المنجزة في المرحلة الحالية

  • منع Vigenère من الانهيار عند المفتاح الفارغ أو غير الصالح.
  • منع Playfair وHill من الانهيار عند الرموز أو الأطوال غير المناسبة.
  • إضافة تحقق للقيم غير الصالحة في Diffie-Hellman.
  • تقوية تحقق RSA ومنع فقدان البيانات عندما تكون قيمة الحرف أكبر من n.
  • منع تحويل الأحرف غير الإنجليزية إلى نتائج خاطئة بصمت.
  • إضافة اختبارات تلقائية للرجوع والتحقق من المدخلات وCache.
  • تصحيح مثال RSA داخل واجهة شرح الكود ليطابق الناتج الفعلي.
  • توحيد مساري التشفير وفك التشفير في معالج واحد داخل الواجهة.
  • توحيد نص عداد العمليات عبر ملفات الترجمة بدل النصوص الثابتة.
  • فصل اختيار الخوارزمية وقراءة المفاتيح في core/service.py بعيدًا عن Tkinter.
  • إضافة اختبارات مباشرة لطبقة الخدمة، ليصبح إجمالي الاختبارات 26 اختبارًا.
  • نقل كتالوج الأكواد والشروحات إلى core/education.py مع إبقاء واجهات التوافق القديمة.
  • فرض حدود للنصوص والأعداد في الوضع التعليمي لمنع استهلاك الموارد المفرط.
  • اختصار التحليل الرسومي إلى أول 100 حرف مع إبقاء النتيجة الكاملة دون تغيير.
  • جعل سجل العمليات وصفيًا فقط دون حفظ النصوص أو النتائج أو المفاتيح.
  • تنفيذ عمليات التشفير في Worker Thread واحد حتى لا تتجمد واجهة Tkinter.
  • إبطال النتائج القديمة عند بدء عملية جديدة أو تبديل الخوارزمية.
  • إضافة Cache محدود لمفاتيح جولات DES ونتيجة DH التعليمية المتكررة.
  • فصل صفحة التحليل الرسومي ومساعداتها في ui/analysis_view.py عبر AnalysisViewMixin.
  • فصل إنشاء وقراءة حقول المفاتيح في ui/key_fields.py عبر KeyFieldsMixin.
  • فصل تبويب شرح الكود وتلوينه في ui/code_view.py عبر CodeViewMixin.
  • فصل بناء تبويب التشفير في ui/crypto_view.py عبر CryptoViewMixin.
  • فصل بناء الشريط الجانبي في ui/sidebar_view.py عبر SidebarViewMixin.
  • إزالة نسخ الواجهة الاحتياطية المكررة من main.py والاعتماد على وحدات ui الرسمية.
  • إضافة Benchmark قابل لإعادة التشغيل في tools/benchmark.py.
  • التحقق من أداء الخوارزميات الأساسية ومدخلات DES وS-DES الصحيحة.
  • إنشاء core/registry.py كسجل مركزي لأسماء الخوارزميات وتصنيفاتها وحقولها.
  • ربط طبقة الخدمة بالـ Registry بدل شروط أسماء الخوارزميات المتفرقة.
  • جعل حقول المفاتيح وقائمة الخوارزميات والاختبار السريع تُبنى من تعريف Registry.
  • إضافة اختبارات Registry، ليصبح إجمالي الاختبارات 32 اختبارًا.
  • استخراج AppState من نافذة Tkinter مع إبقاء خصائص التوافق للـ Mixins.
  • استخراج CryptoController لإدارة Worker وQueue والإلغاء ودورة حياة العملية.
  • منع Mixins من امتلاك دورة حياة Worker مباشرة، مع إبقاء واجهة CryptoApp الحالية مستقرة.
  • إضافة اختبارات Controller، ليصبح إجمالي الاختبارات 35 اختبارًا.
  • استخراج تعريفات الألوان واختيار الثيمات إلى ui/theme_manager.py.
  • جعل تعريفات الثيمات غير قابلة للتعديل من Views أثناء التشغيل.
  • إضافة اختبارات ThemeManager، ليصبح إجمالي الاختبارات 38 اختبارًا.
  • استخراج اختيار اللغة والنصوص واتجاه RTL إلى ui/language_manager.py.
  • منع Views من الوصول المباشر إلى قاموس TRANSLATIONS.
  • توحيد localize وbidi عبر LanguageManager للنصوص الديناميكية.
  • إضافة اختبارات LanguageManager، ليصبح إجمالي الاختبارات 42 اختبارًا.

خطة التطوير حسب الأولوية

هذه الخطة هي نقطة البداية لإعادة بناء المشروع ورفعه من نموذج متوسط إلى مشروع أكثر احترافية.

المستوى الأول — حرج وعالي الأولوية

هذه العناصر تؤثر في صحة النتائج واستقرار التطبيق ويجب معالجتها أولًا:

  • منع Vigenère من الانهيار عند ترك المفتاح فارغًا.
  • التحقق من نوع ومحتوى مفاتيح Vigenère.
  • تنظيف مدخلات Playfair والتحقق من الرموز غير المدعومة.
  • منع Hill من استقبال مفاتيح ناقصة أو نصوص غير مناسبة.
  • إضافة تحقق صحيح لقيم Diffie-Hellman السالبة والصفرية.
  • إضافة تحقق أقوى لقيم RSA، مع توضيح حدود RSA التعليمي.
  • معالجة الأحرف غير الإنجليزية بدل تحويلها إلى نتائج خاطئة بصمت.
  • منع أخطاء الواجهة الناتجة عن الإدخال غير الصحيح وإظهار رسائل مفهومة.

المستوى الثاني — متوسط الأولوية

هذه العناصر تحسن قابلية الصيانة وتجربة المستخدم:

  • تقسيم main.py إلى وحدات مستقلة.
  • نقل الخوارزميات إلى ملفات متخصصة.
  • فصل منطق التحليل عن منطق التشفير.
  • توحيد التحقق من المفاتيح في طبقة واحدة.
  • إزالة except Exception الواسعة أو استبدالها بمعالجة محددة.
  • توحيد النصوص المترجمة بدل وجود نصوص ثابتة داخل main.py.
  • مراجعة أمثلة الشرح للتأكد من تطابقها مع النتائج الفعلية.
  • تحسين واجهة RTL والعرض المختلط بين العربية والإنجليزية.
  • تحسين إدارة سجل العمليات وحفظه عند الحاجة.

المستوى الثالث — تنظيف وتحسينات منخفضة الأولوية

هذه العناصر لا تمنع الاستخدام الأساسي، لكنها ترفع جودة المشروع:

  • إزالة ملفات .pyc المتتبعة في Git.
  • إزالة المسار المتداخل أو الـ submodule غير المكتمل.
  • حذف أو إعادة تنظيم ملفات fix_*.py المؤقتة.
  • إضافة صور ولقطات شاشة للتوثيق.
  • إضافة اختبارات أداء للخوارزميات والتحليل البصري.
  • إضافة إعدادات تنسيق وفحص للكود.
  • إضافة ترخيص واضح للمشروع.
  • إضافة نظام إصدارات وملف CHANGELOG.md.
  • إضافة قوالب Issues وPull Requests.

المرحلة P4-B — Algorithm Registry

يحتوي core/registry.py على تعريف AlgorithmSpec لكل خوارزمية، ويحدد:

  • الاسم والترتيب الظاهر في الواجهة.
  • بادئة دوال CryptoCore.
  • تصنيف الخوارزمية.
  • حقول المفاتيح وأنواعها وقيمها الافتراضية وأحجامها.
  • حد النص، وتطبيع النصوص الثنائية، وتمرير اللغة عند الحاجة.
  • نص Quick Test الافتراضي.

لإضافة خوارزمية جديدة مستقبلًا، يبدأ التغيير بإضافة AlgorithmSpec جديد بعد تنفيذ دوال التشفير وفك التشفير في CryptoCore، ثم إضافة الترجمة والشرح والتحليل عند الحاجة. ستظهر الخوارزمية تلقائيًا في قائمة التطبيق وحقول المفاتيح وQuick Test وطبقة الخدمة، مع بقاء الاختبارات هي بوابة التحقق من اكتمال التعريف.

نتائج P3 الحالية

  • أصبح main.py أصغر بعد إزالة تعريفات fallback المكررة، مع إبقاء AppSizes وStatusBar من وحداتهما الرسمية.
  • تم الحفاظ على Cache الخاص بمفاتيح DES ونتيجة Diffie-Hellman، مع استمرار اختبارات Cache الحالية.
  • نجح بناء PyInstaller باستخدام CryptoEdu.spec، وبدأت النسخة التنفيذية تحت Xvfb دون أخطاء مباشرة.
  • يمكن تشغيل قياس الأداء محليًا باستخدام:
python tools/benchmark.py
python tools/benchmark.py --repeats 300 --case DES

الأداة تقريرية ولا تفشل البناء بسبب اختلاف سرعة الأجهزة أو حمل المعالج.

نتائج P4-A — أدوات الجودة وملفات المشروع الأساسية

  • تم إعداد pyproject.toml بقواعد Ruff واكتشاف الاختبارات وبيانات الحزمة.
  • أصبح فحص Ruff يمر بنجاح، مع إصلاح استيرادات ومتغيرات غير مستخدمة واكتشاف استخدام غير معرّف لـ T في مسار تحليل RSA.
  • تمت إضافة tests/test_ui_smoke.py؛ يعمل عبر Xvfb ويتخطى نفسه تلقائيًا عند غياب DISPLAY.
  • تمت إضافة .github/workflows/ci.yml لفحص Ruff والاختبارات والبناء عبر PyInstaller.
  • تمت إضافة CHANGELOG.md وLICENSE بترخيص MIT.
  • نُقلت سكربتات الإصلاح التاريخية إلى tools/legacy/، وأصبحت tools/benchmark.py أداة التشغيل الأساسية للقياس.

الاختبارات المقترحة

سيتم بناء مجموعة اختبارات مستقلة تغطي:

  • التشفير ثم فك التشفير لكل خوارزمية.
  • أمثلة معيارية معروفة مثل DES وVigenère.
  • المفاتيح الفارغة والناقصة وغير الصحيحة.
  • النصوص العربية والإنجليزية والنصوص المختلطة.
  • الرموز وعلامات الترقيم.
  • الحدود الرياضية الخاصة بـ RSA وDiffie-Hellman وHill.
  • تشغيل الواجهة وتغيير اللغة والثيم والخوارزمية.

الهدف هو أن يصبح تشغيل الاختبارات جزءًا ثابتًا من كل تعديل:

python -m unittest discover -s tests -v
ruff check .
python -m compileall -q .

يتضمن المستودع أيضًا سير عمل GitHub Actions في .github/workflows/ci.yml، ويشغل فحص Ruff والاختبارات واختبار الواجهة عبر Xvfb ثم يتحقق من بناء PyInstaller.

لتشغيل اختبار الواجهة محليًا على Linux:

xvfb-run --auto-servernum python -m unittest tests.test_ui_smoke -v

المساهمة

المشروع في مرحلة تطوير وتحسين مستمر. عند إضافة تعديل جديد يفضل اتباع الخطوات التالية:

  1. إنشاء Branch مستقل.
  2. وصف المشكلة أو الفكرة بوضوح.
  3. إضافة اختبار للحالة الجديدة إن أمكن.
  4. اختبار الواجهة والخوارزمية يدويًا.
  5. التأكد من عدم إضافة ملفات بناء أو Cache إلى Git.
  6. كتابة Commit واضح ومحدد.

الترخيص

المشروع مرخص بموجب MIT License. راجع ملف LICENSE للتفاصيل.


المطور

Mr. Kaido

مشروع تعليمي مفتوح للتطوير بهدف تبسيط مفاهيم التشفير وتحويلها إلى تجربة عملية وتفاعلية.


CryptoEdu Pro — Learn the algorithm, understand the process.

About

Interactive bilingual desktop app for learning classical and modern cryptography step by step.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages