GR-Thunderstorm
BIOS-Overclocker(in)
Hallo Mitcomunitysten!
Ich habe seit geraumer Zeit an einem eigenen Verschlüsselungsverfahren für Texte (später auch für Dateien) gearbeitet und bin nun so weit, eine Beta-Version zu veröffentlichen, um die Leistung auf möglichst vielen verschiedenen System zu erproben.
Eine kurze Erklärung zum Programm:
Den Verschlüsselungsablauf könnt ihr euch im wesentlichen so vorstellen, dass die Codepage 437 aufgesplittet wird in mehrere Teillisten. Anschließend werden mehrere Würfel erstellt, deren Gitterplätze periodisch mit den Symbolen der einzelnen Listen besetzt werden.
Die eigentliche Verschlüsselung läuft nun so ab, dass zunächst geschaut wird, in welchem Würfel sich ein zu verschlüsselndes Symbol befindet. Anschließend wird durch eben jenen Würfel an einem zufälligen Startpunkt mit einem zufälligen Winkel ein "Strahl" geschickt, der nun so lange in dem Würfel umherwandert, bis er auf das gesuchte Symbol trifft und anschließend wird die Anzahl der benötigten Schritte gespeichert.
Jeder Buchstabe wird also mit einer Startposition, einem Startwinkel, einer Schrittzahl und dem betreffenden Würfelindex beschrieben.
Würfelanzahl und Kantenlänge sind frei festlegbar und somit lässt sich das Verfahren beliebig stark parallelisieren.
Ich habe das Programm auf meinem PC bisher sowohl in 32bit als auch in 64bit getestet, allerdings läuft die 32bit-Version schneller. Woran genau das liegt, konnte ich bis jetzt noch nicht klären. Aber das Programm verbraucht ohnehin nur wenige MiB vom Arbeitsspeicher. Daher stelle ich hier nur die 32bit Version online, damit jedes System unter den gleichen Bedingungen arbeitet.
Getestet habe ich das Programm bisher unter WinXP (x86) und Win7 (x64).
Ich fände es toll, wenn ich das Programm sowohl Rekursiv als auch Iterativ und ebenso Multi-Threaded als auch Single-Threaded testen würdet. Das ganze lässt sich in den Settings einstellen.
FROHES BENCHEN!!
EDIT:
Ich habe einen kleinen Exploit beseitigt. Version 0.91 steht nun zum Download.
TOP SCORES ANGEFÜGT! Holt euch den ERSTEN Platz!!
EDIT2:
Top Scores unterteilt nach Multi- und SingleThread.
Bestenliste (nach alter Version 0.91!):
MultiThreaded:
# | Account | CPU (Takt) | RAM | Beste Gesamtzeit (Modus)
1. | GBoos | I7 2600K /4,4GHz) | 16GiB | 16,053 (I)
2. | Mastermaisi777 | Q6600 (3,8GHz) | 4GiB | 17,019 (R)
3. | r|sen_ | I7 2600K (4,314GHz) | 8GiB | 17,971 (R)
4. | Sonntagsfahrer | Phenom II X4 955 (3,842GHz) | 4GiB | 18,533 (R)
5. | Da_Obst | I5 2500K (3,3GHz) | 8GiB | 18,65 (I)
6. | Legacyy | I7 2600K (4 GHz) | 8GiB | 19,017 (I)
7. | Toffelwurst | Phenom II X6 1100T (3,3GHz) | 16GB | 19,688 (R)
SingleThreaded:
# | Account | CPU (Takt) | RAM | Beste Gesamtzeit (Modus)
1. | GBoos | I7 2600K /4,4GHz) | 16GiB | 52,697 (I)
2. | Mastermaisi777 | Q6600 (3,870GHz) | 4GiB | 55,162 (I)
3. | Sonntagsfahrer | Phenom II X4 955 (3,842GHz) | 4GiB | 60,856 (R)
4. | Da_Obst | I5 2500K (3.3GHz) | 8GiB | 61,41 (I)
5. | r|sen_ | I7 2600K (4,314GHz) | 8GiB | 62,322 (I)
6. | Toffelwurst | Phenom II X6 1100T (3,3GHz) | 16GB | 64,537 (R)
7. | Legacyy | I7 2600K (4 GHz) | 8GiB | 65,816 (I)
Erklärung zu den Modi:
I = Iterativ; R = Rekursiv (die kürzere Zeit von beiden wird in die Liste eingetragen)
Edit 3: Quellcode online!
http://dl.dropbox.com/u/1020997/Implementierungstest%20CubeCrypt%20und%20Bench%200.92.zip
Anleitung zu den Funktionen (oder siehe Controlls.h auf Englisch):
Viele Optionen habe ich im Benchmark unsichtbar gemacht, damit niemand versehentlich die Benchmarkergebnisse beeinflusst.
Cube Size: Kantenlänge der Würfel
Cube Count: Anzahl der Würfel, auf die die Codepage 437 aufgeteilt wird
OverCubing: Anzahl der Kopien pro Würfel, damit gleiche Buchstaben parallel verschlüsselt werden können. Da sich die Würfel im Laufe der Verschlüsselung ständig verändern, kann maximal 1 Thread allein an einem Würfel herumwerkeln. Ansonsten wären die Resultate absolut unvorhersehbar.
Die Anzahl an Threads ist demnach: Cube Count * OverCubing (im Benchmark auf 4 * 2 eingestellt).
Key: Verändert die Art der Aufteilung der Buchstaben und die Verteilung innerhalb der Würfel
Benchmark-Mode: Deaktiviert den Zufallsgenerator für Startposition und -winkel beim Verschlüsseln, damit das Programm immer exakt gleich abläuft.
Background-Modus: Man kann die Verschlüsselung starten und theoretisch ganz normal weiter im Programm arbeiten, ohne dass sich alles aufhängt. Mit Cubemanager::Join() kann man das Programm anschließend wieder synchronisieren und es wird gewartet, bis die Verschlüsselung / Entschlüsselung abgelaufen ist.
PreCrypt: Während die Würfel erstellt werden, wird abhängig vom Key ein einzelner Verschlüsselungsvorgang gestartet, wodurch die Würfel sich nochmals verändern. Das habe ich im Bench deaktiviert, da die Verschlüsselung in diesem Fall nur auf einem Kern läuft und das Ergebniss beeinflusst worden wäre.
EDIT 4: VERSION 0.92 ONLINE!!!
Known Issues:
Leider stürzt das Programm mit eingeschalteter Rekusion ab, wenn man mit einem Cube Count von weniger als 4 arbeitet. Aus Performancegründen musste ich diesen aber leider so tief einstellen. Der Recursive-Modus funktioniert also leider nicht mehr zum Benchen.
EDIT 5: VERSION 0.92 Beta2 ONLINE!!!
Änderungen: Verbesserte Erkennung der CPU-Kerne.
Wer Probleme beim Erkennen der richtigen Anzahl an CPU-Kernen hatte, sollte mit dieser Version den Test evtl. wiederholen. Für alle anderen wird es keine Unterschiede geben.
EDIT 6: ENDLICH NEUE BESTENLISTEN!!!
Ich werde versuchen, diese künftig regelmäßig Up2Date zu bringen.
EDIT 7: BUGFIX
Ich habe die Beta2 erneut mit dem SP1 kompiliert und habe den Fehler des älteren Compilers ausgemerzt, der ausschließlich Nutzer der 0.92 Beta2 betroffen hat.
Ich bitte vielmals um Verzeihung für diese Fahrlässigkeit. :/
Im Anhang findet ihr fortan nur noch die Beta2R (Recompiled).
Ich habe seit geraumer Zeit an einem eigenen Verschlüsselungsverfahren für Texte (später auch für Dateien) gearbeitet und bin nun so weit, eine Beta-Version zu veröffentlichen, um die Leistung auf möglichst vielen verschiedenen System zu erproben.
Eine kurze Erklärung zum Programm:
Den Verschlüsselungsablauf könnt ihr euch im wesentlichen so vorstellen, dass die Codepage 437 aufgesplittet wird in mehrere Teillisten. Anschließend werden mehrere Würfel erstellt, deren Gitterplätze periodisch mit den Symbolen der einzelnen Listen besetzt werden.
Die eigentliche Verschlüsselung läuft nun so ab, dass zunächst geschaut wird, in welchem Würfel sich ein zu verschlüsselndes Symbol befindet. Anschließend wird durch eben jenen Würfel an einem zufälligen Startpunkt mit einem zufälligen Winkel ein "Strahl" geschickt, der nun so lange in dem Würfel umherwandert, bis er auf das gesuchte Symbol trifft und anschließend wird die Anzahl der benötigten Schritte gespeichert.
Jeder Buchstabe wird also mit einer Startposition, einem Startwinkel, einer Schrittzahl und dem betreffenden Würfelindex beschrieben.
Würfelanzahl und Kantenlänge sind frei festlegbar und somit lässt sich das Verfahren beliebig stark parallelisieren.
Ich habe das Programm auf meinem PC bisher sowohl in 32bit als auch in 64bit getestet, allerdings läuft die 32bit-Version schneller. Woran genau das liegt, konnte ich bis jetzt noch nicht klären. Aber das Programm verbraucht ohnehin nur wenige MiB vom Arbeitsspeicher. Daher stelle ich hier nur die 32bit Version online, damit jedes System unter den gleichen Bedingungen arbeitet.
Getestet habe ich das Programm bisher unter WinXP (x86) und Win7 (x64).
Ich fände es toll, wenn ich das Programm sowohl Rekursiv als auch Iterativ und ebenso Multi-Threaded als auch Single-Threaded testen würdet. Das ganze lässt sich in den Settings einstellen.
FROHES BENCHEN!!
EDIT:
Ich habe einen kleinen Exploit beseitigt. Version 0.91 steht nun zum Download.
TOP SCORES ANGEFÜGT! Holt euch den ERSTEN Platz!!
EDIT2:
Top Scores unterteilt nach Multi- und SingleThread.
Bestenliste (nach alter Version 0.91!):
MultiThreaded:
# | Account | CPU (Takt) | RAM | Beste Gesamtzeit (Modus)
1. | GBoos | I7 2600K /4,4GHz) | 16GiB | 16,053 (I)
2. | Mastermaisi777 | Q6600 (3,8GHz) | 4GiB | 17,019 (R)
3. | r|sen_ | I7 2600K (4,314GHz) | 8GiB | 17,971 (R)
4. | Sonntagsfahrer | Phenom II X4 955 (3,842GHz) | 4GiB | 18,533 (R)
5. | Da_Obst | I5 2500K (3,3GHz) | 8GiB | 18,65 (I)
6. | Legacyy | I7 2600K (4 GHz) | 8GiB | 19,017 (I)
7. | Toffelwurst | Phenom II X6 1100T (3,3GHz) | 16GB | 19,688 (R)
SingleThreaded:
# | Account | CPU (Takt) | RAM | Beste Gesamtzeit (Modus)
1. | GBoos | I7 2600K /4,4GHz) | 16GiB | 52,697 (I)
2. | Mastermaisi777 | Q6600 (3,870GHz) | 4GiB | 55,162 (I)
3. | Sonntagsfahrer | Phenom II X4 955 (3,842GHz) | 4GiB | 60,856 (R)
4. | Da_Obst | I5 2500K (3.3GHz) | 8GiB | 61,41 (I)
5. | r|sen_ | I7 2600K (4,314GHz) | 8GiB | 62,322 (I)
6. | Toffelwurst | Phenom II X6 1100T (3,3GHz) | 16GB | 64,537 (R)
7. | Legacyy | I7 2600K (4 GHz) | 8GiB | 65,816 (I)
Erklärung zu den Modi:
I = Iterativ; R = Rekursiv (die kürzere Zeit von beiden wird in die Liste eingetragen)
Edit 3: Quellcode online!
http://dl.dropbox.com/u/1020997/Implementierungstest%20CubeCrypt%20und%20Bench%200.92.zip
Anleitung zu den Funktionen (oder siehe Controlls.h auf Englisch):
Viele Optionen habe ich im Benchmark unsichtbar gemacht, damit niemand versehentlich die Benchmarkergebnisse beeinflusst.
Cube Size: Kantenlänge der Würfel
Cube Count: Anzahl der Würfel, auf die die Codepage 437 aufgeteilt wird
OverCubing: Anzahl der Kopien pro Würfel, damit gleiche Buchstaben parallel verschlüsselt werden können. Da sich die Würfel im Laufe der Verschlüsselung ständig verändern, kann maximal 1 Thread allein an einem Würfel herumwerkeln. Ansonsten wären die Resultate absolut unvorhersehbar.
Die Anzahl an Threads ist demnach: Cube Count * OverCubing (im Benchmark auf 4 * 2 eingestellt).
Key: Verändert die Art der Aufteilung der Buchstaben und die Verteilung innerhalb der Würfel
Benchmark-Mode: Deaktiviert den Zufallsgenerator für Startposition und -winkel beim Verschlüsseln, damit das Programm immer exakt gleich abläuft.
Background-Modus: Man kann die Verschlüsselung starten und theoretisch ganz normal weiter im Programm arbeiten, ohne dass sich alles aufhängt. Mit Cubemanager::Join() kann man das Programm anschließend wieder synchronisieren und es wird gewartet, bis die Verschlüsselung / Entschlüsselung abgelaufen ist.
PreCrypt: Während die Würfel erstellt werden, wird abhängig vom Key ein einzelner Verschlüsselungsvorgang gestartet, wodurch die Würfel sich nochmals verändern. Das habe ich im Bench deaktiviert, da die Verschlüsselung in diesem Fall nur auf einem Kern läuft und das Ergebniss beeinflusst worden wäre.
EDIT 4: VERSION 0.92 ONLINE!!!
Known Issues:
Leider stürzt das Programm mit eingeschalteter Rekusion ab, wenn man mit einem Cube Count von weniger als 4 arbeitet. Aus Performancegründen musste ich diesen aber leider so tief einstellen. Der Recursive-Modus funktioniert also leider nicht mehr zum Benchen.
EDIT 5: VERSION 0.92 Beta2 ONLINE!!!
Änderungen: Verbesserte Erkennung der CPU-Kerne.
Wer Probleme beim Erkennen der richtigen Anzahl an CPU-Kernen hatte, sollte mit dieser Version den Test evtl. wiederholen. Für alle anderen wird es keine Unterschiede geben.
EDIT 6: ENDLICH NEUE BESTENLISTEN!!!
Ich werde versuchen, diese künftig regelmäßig Up2Date zu bringen.
EDIT 7: BUGFIX
Wie gesagt ist mir ein total dummer Fehler unterlaufen.Ich habe gerade bemerkt, dass mir ein total doofer Fehler unterlaufen ist.
Ich habe mich gewundert, weshalb die 0.92 Beta2 etwas kleiner ist als die 0.92 Beta und habe den QuellCode für die ältere Version erneut kompiliert, einmal auf meinem PC und einmal auf meinem Laptop. Mein Laptop hat aus irgendeinem Grund größere Dateien ausgespuckt als mein PC, trotz identischer Compilereinstellungen! Auch leistungsmäßig ergeben sich teils große Unterschiede: Die Version, die auf dem Laptop kompiliert wurde, läuft allgemein etwas schneller, bis zu 5 Sekunden ohne MultiThreading und bis zu 0,5 Sekunden mit MultiThreading. Letzten Endes habe ich bemerkt, dass ich auf dem PC noch Visual Studio 2008 OHNE SP1 verwende, auf dem Lappy ist es jedoch bereits installiert.
Ich hoffe, ihr hasst mich jetzt nicht deswegen. :/ Ich werde das SP1 nachinstallieren und dann die Beta 2 erneut kompilieren.
Ich habe die Beta2 erneut mit dem SP1 kompiliert und habe den Fehler des älteren Compilers ausgemerzt, der ausschließlich Nutzer der 0.92 Beta2 betroffen hat.
Ich bitte vielmals um Verzeihung für diese Fahrlässigkeit. :/
Im Anhang findet ihr fortan nur noch die Beta2R (Recompiled).
Anhänge
Zuletzt bearbeitet: