Eigener Benchmark: CubeCrypt! - BUGFIX mit besserer Performance!

Nicht schlimm ^^ muss ja selbst den Bench nochmal machen da was beim Copy&Paste schiefgegangen ist ;)

Edit:
Neue Benchwerte

Benötigte Sekunden zum Erstellen des Managers: 0,015
Benötigte Sekunden zum Verschlüsseln: 4,852
Anzahl Zeichen: 1295
Durchschnittliche Sekunden pro Zeichen: 0,003
Gesamtzeit: 4,867
MutiThreaded: [True]
Recursive: [False]

Benötigte Sekunden zum Erstellen des Managers: 0,062
Benötigte Sekunden zum Verschlüsseln: 41,871
Anzahl Zeichen: 1295
Durchschnittliche Sekunden pro Zeichen: 0,032
Gesamtzeit: 41,933
MutiThreaded: [False]
Recursive: [False]
 
Zuletzt bearbeitet:
AW: Eigener Benchmark: CubeCrypt! - Bitte testen und Performance mitteilen! - UPDATE: NEUE VERSION

Da der ganze Algorithmus von Anfang an OpenSource sein sollte, musste ich natürlich etwas einbauen, wodurch eine Verschlüsselung auch tatsächlich gewährleistet werden kann. Bei ~20 Hintergrundkonstanten ergeben sich für den Anwender nahezu unendliche Anpassungsmöglichkeiten und diese von außen nachzuvollziehen, sollte so schwer wie möglich gestaltet werden. WENN eine Firma quasi diesen Code verwendet, muss sie lediglich intern die Konstanten entsprechend der eigenen Fantasie "einbrennen" und schon könnten die verschlüsselten Daten von keiner externen Person mehr entschlüsselt werden, ganz gleich ob die vier Primärwerte übereinstimmen. Bruteforce ist nahezu ausgeschlossen oder stünde einen nahezu unendlich großen Aufwand dar. ;) Noch dazu steht es dem Anwender frei, ganz einfach die Wurfel::Collide in der Wurfel.cpp (siehe verlinkte Zip-Dateien auf Seite 1) nach eigenen Wünschen beliebig kompliziert zu gestalten. Ein weiterer Punkt ist der, dass man einfach die Reihenfolge der Zeichen in dem Code111-Array in der Structs.h ein wenig vertauscht.
NOCH ein weiterer Schutzmechanismus: Der Anwender kann vor der Compilierung die Wirkungsweise der PreCrypt-Funktion angleichen, indem er hierfür einen anderen Startwinkel und Startposition vorgibt. Dadurch mutiert der Würfel noch vor der ersten Verwendung bereits zum ersten mal was Radikale Auswirkungen auf die gesamte Verschlüsselung hat.
Ich habe also durchaus einige Mechanismen eingebaut, die man dazu nutzen kann, den QuellCode wasserdicht zu machen.

Ok, ich merke, ich bin im Thema Kryptographie nicht wirklich drin, es ist also doch schon eine Verschlüsselung, aber ich denke, ich werde im Hauptstudium Kryptographie wählen.
Allerdings sehe ich bei deinem Ansatz, das man einige einstellungen nur im Quellcode festlegen kann, noch ein Problem:
Es ist noch nicht sehr praktisch für die Datenübertragung, da hierfür mindestens eine der beiden Parteien das Programm neu compilieren muss, aber wie einigt man sich automatisch auf die Einstellungen im Quellcode, ohne dabei unverschlüsselt zu komunizieren (RSA oder Public Key? Ich meine damit die mathematischen Ansätze und nicht bereits implementierte Lösungen).

ansonsten könnte man das Programm für lokale Verschlüsselung nutzen, das bietet aber nur wenig Sicherheit wenn das compilierte Programm auf dem selben Datenträger vorliegt.

Mein Vorschlag wäre es, alle (und zwar wirklich alle Einstellungen außer den Einstellungen welche Prozessorabhängig sein könnten, und deshalb für Datenübertragung immer ein Default-Wert sein könnten) zur Laufzeit aus einem Key zu generieren, auf den sich zwei Parteien übers Internet per Public-Key-Verfahren einigen können. Für die Lokale Verschlüsselung denkt man sich einfach ein Passwort aus, welches dann als Key verwendet wird.

Dann bleibt aber immer noch die Laufzeit des Algorithmus, die noch sehr lang ist. Da bisherige Verschlüsselungsverfahren wie ab 512bit-Verschlüsselung mathematisch sicher sind, bietet dein Algorithmus leider (noch) keinen Mehrwert.

Und sorry wegen meiner vorherigen, vielleicht doch etwas harschen Kritik.

MfG, byte.
 
Unter Win7 64 (Hardware steht in der Signatur):

SingleCPU ohne Rekursiv-Option: 52,073 Sek.
MultiCPU ohne Rekursiv-Option: 18,439 Sek.

Wenn ich recursive auswähle, stürzt das Programm ab, auch in sämtlichen Kompatibilitätsmodi.
 
Multi-Threaded:

Benötigte Sekunden zum Erstellen des Managers: 0,031
Benötigte Sekunden zum Verschlüsseln: 5,414
Anzahl Zeichen: 1295
Durchschnittliche Sekunden pro Zeichen: 0,004
Gesamtzeit: 5,445
MutiThreaded: [True]
Recursive: [False]

Cube1.PNG

Softy | i7-3770K @ 4,8 GHz | 8GB DDR3-2133MHz 10-11-10-28 1T | 5,445
 
Gar nicht mal so schlecht für meine runter gerockte Dual Core Kiste :
Athlon 64 x2 5000+ @ 2,6Ghz
2GB DDR2
@ Win 7 32Bit

Multi Thread :

Benötigte Sekunden zum Erstellen des Managers: 0,062
Benötigte Sekunden zum Verschlüsseln: 29,859
Anzahl Zeichen: 1295
Durchschnittliche Sekunden pro Zeichen: 0,023
Gesamtzeit: 29,921
MutiThreaded: [True]
Recursive: [False]

Ohne Multi Thread:
Benötigte Sekunden zum Erstellen des Managers: 0
Benötigte Sekunden zum Verschlüsseln: 52,213
Anzahl Zeichen: 1295
Durchschnittliche Sekunden pro Zeichen: 0,04
Gesamtzeit: 52,213
MutiThreaded: [False]
Recursive: [False]


Nächste Woche kommt mal mein neues System an den Start :)
 
So hier mal meine Ergebnisse

Multi-Threaded:

Benötigte Sekunden zum Erstellen des Managers: 0,031
Benötigte Sekunden zum Verschlüsseln: 5,273
Anzahl Zeichen: 1295
Durchschnittliche Sekunden pro Zeichen: 0,004
Gesamtzeit: 5,304
MutiThreaded: [True]
Recursive: [False]

mein benchmark.png

minicoopers | i7-3770K @ 5,0 GHz | 16 GB DDR3 -1600 CL 10-10-10-27 1T | 5,304

Multi-Threaded:

Benötigte Sekunden zum Erstellen des Managers: 0,016
Benötigte Sekunden zum Verschlüsseln: 33,041
Anzahl Zeichen: 1295
Durchschnittliche Sekunden pro Zeichen: 0,025
Gesamtzeit: 33,057
MutiThreaded: [False]
Recursive: [False]

mein benchmark singel.png

minicoopers | i7-3770K @ 5,0 GHz | 16 GB DDR3 -1600 CL 10-10-10-27 1T | 33,057
 
multi.png single.png

Multithread:
Incredible Alk | i7-3930K @ 4,2 GHz | 16 GB DDR3 - 1866 CL 9-10-9-27 2T | 4,664 s

Singlethread:
Incredible Alk | i7-3930K @ 4,2 GHz | 16 GB DDR3 - 1866 CL 9-10-9-27 2T | 39,468 s
 
Zurück