
تنفيذ جدول قوس قزح لـ SHA-256 مسرع بواسطة GPU يعتمد على تحليل CDP (Cyclic Digit-sum Projection) الهيكلي. AMD RX 9070 XT, OpenCL + Vulkan.
تنفيذ جدول قوس قزح مُسرّع بواسطة GPU لإطار التحليل البنيوي CDP لـ SHA-256.
مبني على نتائج ورقة CDP (DOI: 10.5281/zenodo.20627240)، يوفر هذا المستودع تنفيذًا كاملاً وعمليًا لجداول سلسلة قوس قزح المستندة إلى CDP مع نوى بناء OpenCL وخط أنابيب استعلام/تحقق Vulkan الحاسوبي الموجه لأجهزة AMD RDNA4.
CDP (الإسقاط الدوري لمجموع الأرقام) هو إطار تحليل بنيوي لـ SHA-256 يكشف عن خصائص رياضية غير موثقة سابقًا لتوزيع مخرجات دالة التجزئة.
الملاحظة الأساسية: مجموع الأرقام السداسية العشرية W(H) لأي مخرجات SHA-256، عند إعادة تجزئتها تكرارياً من خلال f(w) = W(SHA256(str(w)))، تتقارب حتمياً إلى دورتين مغلقتين بالضبط:
C1: 476 ↔ 438 (دورة ثنائية)
C2: 471 → 472 → 525 → 537 → 414 → 417 → 546 → 518 → 471 (دورة ثمانية)
هذا الهيكل الدوري، بالإضافة إلى بصمة متعددة المكونات F(H) = (W, Wvec₁₆, cycle_entry, W₂–W₅, max_nibble, min_nibble)، يُنتج تعييناً تقابلياً على مساحات الإدخال المقيدة - مما يتيح البحث عن الصورة العكسية بـ O(1) عبر جداول قوس قزح مع عدم وجود تصادمات في دالة الاختزال.
الخصائص المثبتة الرئيسية:
Σnibble(W₀) = 38 لجميع أزواج المكملات الـ256π_B = 17.00%، مستقلة عن K[i] و H₀ وفئة الإدخالW(H₀) = 502 - بصمة بنيوية قابلة للكشف لثوابت التهيئة NIST (+22.2 فوق التوازن)لا يكسر CDP SHA-256. مقاومة الصورة العكسية والتصادم غير متأثرة. انظر القسم 12 من الورقة.
SHA256-CDP/
├── cdp_chain_builder.py # نقطة الدخول الرئيسية — بناء، كسر، استعلام CLI
├── cdp_query.comp # التظليل الحاسوبي Vulkan GLSL (نواة الاستعلام)
├── cdp_verify.comp # التظليل الحاسوبي Vulkan GLSL (نواة التحقق)
├── vulkan_query.py # محرك Vulkan Python (خلفية ACO)
└── paper/
└── cdp_v3.pdf # ورقة CDP الإصدار الثالث
pip install pyopenclpip install numpypip install vulkan + Vulkan SDKملاحظة: Vulkan مطلوب لأداء الاستعلام الصحيح. بدونه، يعود النظام إلى المعالجة المتعددة لوحدة المعالجة المركزية (أبطأ بشكل ملحوظ). تحتوي نواة استعلام OpenCL على خطأ معروف في مُحسِّن AMD PAL-LLVM على gfx1201 يُنتج نتائج غير صحيحة مع
-cl-fast-relaxed-math؛ لا يحتوي خلفية Vulkan ACO على هذه المشكلة.
مستخدمو Windows: أضف
python.exeوclinfo.exeوexplorer.exeإلى القائمة البيضاء للتحكم في الوصول إلى المجلدات المحمية في Windows Defender لمنع حظر الوصول إلى ذاكرة GPU أثناء عمليات الجدول.
git clone https://github.com/JM00NJ/SHA256-CDP
cd SHA256-CDP
pip install pyopencl numpy vulkan
تحقق من اكتشاف GPU:
python cdp_chain_builder.py --validate
# جدول واحد (أحرف صغيرة 8-حرف، chain_len=300,000)
python cdp_chain_builder.py --build --charset lower --length 8 --chain-len 300000 --output cdp_8.bin
# جداول متعددة (تغطية أعلى)
# n=1: 66.7% n=2: 88.9% n=3: 96.3% n=5: 99.3%
python cdp_chain_builder.py --build-multi 3 --prefix cdp_8_bin --length 8 --chain-len 300000
# تجزئة واحدة
python cdp_chain_builder.py --crack <sha256_hash> \
--tables cdp_8_bin_1.bin,cdp_8_bin_2.bin,cdp_8_bin_3.bin \
--length 8 --chain-len 300000
# قائمة تجزئات (وضع الدفعة — يتم تحميل الجداول مرة واحدة)
python cdp_chain_builder.py --crack-list hashes.txt \
--tables cdp_8_bin_1.bin,cdp_8_bin_2.bin,cdp_8_bin_3.bin \
--length 8 --chain-len 300000
### اختبار ذاتي من البداية إلى النهاية
```bash
python cdp_chain_builder.py --self-test --length 7
python cdp_chain_builder.py --validate
python cdp_chain_builder.py --validate-query <sha256_hash>
تم الاختبار على AMD Radeon RX 9070 XT (gfx1201, 32 CU)، Windows 11، برنامج التشغيل 3679.0 (PAL,LC):
| العملية | الإنتاجية |
|---|---|
| بناء الجدول (نواة ILP2) | ~2.5 GH/s |
| الاستعلام — الدفعة الأولى (ضحلة) | ~14 GH/s |
| الاستعلام — المتوسط عبر الدفعات | ~5 GH/s |
| التحقق GPU (Vulkan ACO) | ~2 ثانية لكل 88 ألف مرشح |
أحرف صغيرة 7-حرف، 3 جداول (تغطية 96.3%):
أوضاع النواة:
--mode ilp2 — سلسلتان/خيط، SHA256 متداخل لـ ILP (الافتراضي، الأسرع على AMD RDNA)--mode vec4 — 4 سلاسل/خيط باستخدام uint4 العمليات الحسابية--mode scalar — سلسلة واحدة/خيط (خط الأساس)يحتوي خلفية مُجمّع AMD PAL-LLVM المستخدمة بواسطة OpenCL على Windows (gfx1201) على خطأ مُحسّن موثق: حلقات ذات بداية متغيرة (for step=pos; step<N) تُنتج نتائج غير صحيحة مع -cl-fast-relaxed-math. يعيد العمل البديل (-O0) الصحة لكنه يُقلل الإنتاجية ~3-4 مرات. خلفية Vulkan ACO هي خط أنابيب مُجمّع منفصل تماماً ولا تحتوي على هذه المشكلة. تستخدم نوى الاستعلام والتحقق Vulkan؛ تستخدم نوى البناء OpenCL (غير متأثرة بالخطأ).
تستخدم دالة الاختزال القياسية المزروعة بـ PCG 64 بت من الإنتروبيا من digest[0:2]. يبني الاختزال الحقني CDP البذرة من البصمة الكاملة (W, Wvec₁₆, max_nibble, min_nibble) — نفس المكونات المُثبت حقنيتها على SHA256(X) بواسطة نظرية التقابل CDP. يضمن هذا عدم وجود اندماجات سلسلة من دالة الاختزال نفسها؛ الاندماجات المتبقية هي تصادمات نقطة النهاية لمفارقة عيد الميلاد (~33% لكل جدول، بما يتوافق مع التغطية المتوقعة 66.7%).
تستخدم الجداول تنسيقاً ثنائياً مضغوطاً (سحر CDP1، 39 بايت/إدخال) — أصغر بحوالي 3.4 مرات من JSON. استخدم --convert لتحويل جداول JSON الموجودة:
python cdp_chain_builder.py --convert table.json --output table.bin
| الاسم | الأحرف | المساحة (8-حرف) |
|---|---|---|
lower | a–z (26) | 2.1 × 10¹¹ |
alnum |
© 2026 Erenay Özkan (JM00NJ / Vesqer)
هذا المشروع مرخص بموجب GNU Affero General Public License v3.0 (AGPL-v3) مع شرط العموم (Commons Clause).
بموجب شرط العموم، لا يجوز بيع هذا البرنامج أو استخدامه كجزء من منتج أو خدمة تجارية دون إذن كتابي صريح من المؤلف.
الاستخدام مفتوح المصدر والبحث والتطبيقات غير التجارية مسموح بها بموجب شروط AGPL-v3 — يجب نشر التعديلات بموجب نفس الترخيص.
للاستفسارات حول الترخيص التجاري: netacoding.com
انظر LICENSE للشروط الكاملة.
بُني بواسطة JM00NJ — netacoding.com
| a–z, 0–9 (36) |
| 2.8 × 10¹² |
full | a–z, A–Z, 0–9, رموز (70) | 5.8 × 10¹⁴ |