
GPU-beschleunigte SHA-256-Rainbow-Tabellen-Implementierung basierend auf CDP-Strukturanalyse (zyklische Ziffernsummen-Projektion). AMD RX 9070 XT, OpenCL + Vulkan.
GPU-beschleunigte Regenbogentabellen-Implementierung des CDP-Strukturanalyse-Frameworks für SHA-256.
Basierend auf den Erkenntnissen des CDP-Papers (DOI: 10.5281/zenodo.20627240) bietet dieses Repository eine vollständige, funktionsfähige Implementierung von CDP-basierten Regenbogenketten-Tabellen mit OpenCL-Build-Kerneln und Vulkan-Compute-Query/Verify-Pipelines, die auf AMD-RDNA4-Hardware abzielen.
CDP (Cyclic Digit-sum Projection) ist ein Strukturanalyse-Framework für SHA-256, das bisher undocumented mathematische Eigenschaften der Ausgabeverteilung der Hashfunktion aufdeckt.
Die Kernbeobachtung: Die Hex-Ziffernsumme W(H) einer beliebigen SHA-256-Ausgabe konvergiert bei iterativem erneutem Hashen durch f(w) = W(SHA256(str(w))) deterministisch in genau zwei geschlossene Zyklen:
C1: 476 ↔ 438 (2er-Zyklus)
C2: 471 → 472 → 525 → 537 → 414 → 417 → 546 → 518 → 471 (8er-Zyklus)
Diese zyklische Struktur ergibt zusammen mit einer Mehrkomponenten-Fingerprint F(H) = (W, Wvec₁₆, cycle_entry, W₂–W₅, max_nibble, min_nibble) eine bijektive Abbildung über eingeschränkte Eingabefäume — was O(1)-Preimage-Lookup über Regenbogentabellen mit null Reduktionsfunktions-Kollisionen ermöglicht.
Wichtige bewiesene Eigenschaften:
Σnibble(W₀) = 38 für alle 256 Komplementpaareπ_B = 17,00 %, unabhängig von K[i], H₀ und EingabeklasseW(H₀) = 502 — erkennbare strukturelle Signatur der NIST-Initialisierungskonstanten (+22,2 über dem Gleichgewicht)CDP bricht SHA-256 nicht. Preimage- und Kollisionsresistenz bleiben unberührt. Siehe Abschnitt 12 des Papers.
SHA256-CDP/
├── cdp_chain_builder.py # Haupteinstiegspunkt — Build-, Crack-, Query-CLI
├── cdp_query.comp # Vulkan-GLSL-Compute-Shader (Query-Kernel)
├── cdp_verify.comp # Vulkan-GLSL-Compute-Shader (Verify-Kernel)
├── vulkan_query.py # Vulkan-Python-Engine (ACO-Backend)
└── paper/
└── cdp_v3.pdf # CDP-Paper v3
pip install pyopenclpip install numpypip install vulkan + Vulkan SDKHinweis: Vulkan ist für korrekte Query-Leistung erforderlich. Ohne Vulkan fällt das System auf CPU-Multiprocessing zurück (deutlich langsamer). Der OpenCL-Query-Kernel hat einen bekannten AMD-PAL-LLVM-Optimierer-Bug auf gfx1201, der mit
-cl-fast-relaxed-mathfalsche Ergebnisse liefert; das Vulkan-ACO-Backend hat dieses Problem nicht.
Windows-Benutzer: Fügen Sie
python.exe,clinfo.exeundexplorer.exezur Whitelist der Windows-Defender-Ordnerzugriffskontrolle (Controlled Folder Access) hinzu, um GPU-Speicherzugriffsblockaden während Tabellenoperationen zu verhindern.
git clone https://github.com/JM00NJ/SHA256-CDP
cd SHA256-CDP
pip install pyopencl numpy vulkan
GPU-Erkennung überprüfen:
python cdp_chain_builder.py --validate
# Einzelne Tabelle (Kleinbuchstaben, 8 Zeichen, chain_len=300.000)
python cdp_chain_builder.py --build --charset lower --length 8 --chain-len 300000 --output cdp_8.bin
# Mehrere Tabellen (höhere Abdeckung)
# 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
# Einzelner Hash
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
# Hash-Liste (Batch-Modus — Tabellen werden einmal geladen)
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
python cdp_chain_builder.py --self-test --length 7
python cdp_chain_builder.py --validate
python cdp_chain_builder.py --validate-query <sha256_hash>
Getestet auf AMD Radeon RX 9070 XT (gfx1201, 32 CUs), Windows 11, Treiber 3679.0 (PAL,LC):
| Operation | Durchsatz |
|---|---|
| Tabellen-Build (ILP2-Kernel) | ~2,5 GH/s |
| Query — erste Charge (flach) | ~14 GH/s |
| Query — Durchschnitt über Chargen | ~5 GH/s |
| GPU-Verify (Vulkan ACO) | ~2 s pro 88k Kandidaten |
7 Zeichen Kleinbuchstaben, 3 Tabellen (96,3 % Abdeckung):
Kernel-Modi:
--mode ilp2 — 2 Ketten/Thread, verschachteltes SHA256 für ILP (Standard, am schnellsten auf AMD RDNA)--mode vec4 — 4 Ketten/Thread unter Verwendung von uint4-Arithmetik--mode scalar — 1 Kette/Thread (Basislinie)Das von OpenCL unter Windows verwendete AMD-PAL-LLVM-Compiler-Backend (gfx1201) hat einen dokumentierten Optimierer-Bug: Schleifen mit variablem Start (for step=pos; step<N) erzeugen mit -cl-fast-relaxed-math falsche Ergebnisse. Der Workaround (-O0) stellt die Korrektheit wieder her, reduziert aber den Durchsatz um etwa das 3-4-fache. Das Vulkan-ACO-Backend ist eine vollständig separate Compiler-Pipeline und hat dieses Problem nicht. Query- und Verify-Kernel verwenden Vulkan; Build-Kernel verwenden OpenCL (vom Bug nicht betroffen).
Die standardmäßige PCG-geseedete Reduktionsfunktion verwendet 64 Bits Entropie aus digest[0:2]. Die CDP-injektive Reduktion baut den Seed aus dem vollständigen Fingerprint (W, Wvec₁₆, max_nibble, min_nibble) auf — dieselben Komponenten, deren Injektivität über SHA256(X) durch das CDP-Bijektions-Theorem bewiesen ist. Dies garantiert null Kettenverschmelzungen durch die Reduktionsfunktion selbst; verbleibende Verschmelzungen sind Geburtstagsparadoxon-Endpunktkollisionen (~33 % pro Tabelle, entsprechend der erwarteten 66,7 %-Abdeckung).
Tabellen verwenden ein kompaktes Binärformat (CDP1-Magic, 39 Bytes/Eintrag) — etwa 3,4× kleiner als JSON. Verwenden Sie --convert, um vorhandene JSON-Tabellen zu konvertieren:
python cdp_chain_builder.py --convert table.json --output table.bin
| Name | Zeichen | Raum (8 Zeichen) |
|---|---|---|
lower | a–z (26) | 2,1 × 10¹¹ |
© 2026 Erenay Özkan (JM00NJ / Vesqer)
Dieses Projekt ist unter der GNU Affero General Public License v3.0 (AGPL-v3) mit der Commons Clause lizenziert.
Gemäß der Commons Clause dürfen Sie diese Software nicht verkaufen oder als Teil eines kommerziellen Produkts oder Dienstes verwenden, ohne ausdrückliche schriftliche Genehmigung des Autors.
Open-Source-Nutzung, Forschung und nicht-kommerzielle Anwendungen sind unter den AGPL-v3-Bedingungen gestattet — Änderungen müssen unter derselben Lizenz veröffentlicht werden.
Für kommerzielle Lizenzanfragen: netacoding.com
Siehe LICENSE für die vollständigen Bedingungen.
Erstellt von JM00NJ — netacoding.com
alnum| a–z, 0–9 (36) |
| 2,8 × 10¹² |
full | a–z, A–Z, 0–9, Symbole (70) | 5,8 × 10¹⁴ |