![]() |
3DES mit DEC (Delphi Encryption Compendium)
hallo
ich suche die möglichkeit ein "3DES" mit "2-Key"(2mal56bit=112bit) zu entschlüsseln und auch zu verschlüsseln hab jetzt einiges mit googel durch, aber da scheint es unterschiede zwischen DEC 5.1 und 5.2 zu geben habe mir auch alles in part I angesehen und nach "DEC Tutorial" gesucht...aber leider bahnhof register... registerclass kann der ganzen sache kein "AHA"-effekt entreißen ok, um es kurz zu umschreiben was brauch ich alles um mit DEC den 3DES zu meistern? 2 functionen: function EnCrypt3DES(Input, Passwort: String): String; function DeCrypt3DES(Input, Passwort: String): String; aso, ich bin auf CBC angewiesen und 112bit passwort ich habe D7 (nicht 2007) hoffe das geht mit DEC, meine kolegen die C,C++ oder C# benutzen haben auch probleme aber leider mehr sourcecode im internet :( dankbar für hilfe mfg Dano |
AW: 3DES mit DEC (Delphi Encryption Compendium)
Benutz mal die SuFu, zum DEC steht hier wirklich massig im Forum.
Warum benutzt du 3DES? DES ist outdated. |
AW: 3DES mit DEC (Delphi Encryption Compendium)
Zitat:
mfg Christian |
AW: 3DES mit DEC (Delphi Encryption Compendium)
Zitat:
|
AW: 3DES mit DEC (Delphi Encryption Compendium)
danke, habe es selber hinbekommen nachdem ich mir den ganzen tag den quellcode von DEC angeschaut habe^^
die probleme mit dem padding habe ich auch hinbekommen jetzt habe ich nur ein anderes problem wenn ich mit cryptool die gegenprobe mache stimmt immer der erste 8byte block nicht nach 8 byte sind beide synchron zu einander und wenn ich das selbe mit cryptool verschlüssel und dann in delphi decodiere habe ich für den ersten 8byte block denau die selben hyroglyphen mfg Dano |
AW: 3DES mit DEC (Delphi Encryption Compendium)
sieh dir die Parameter die du der Verschlüsselung mitgibst nochmal geanu an. Ich hatte vor eineiger Zeit das selbe Problem. K-A. welcher es war:oops:
|
AW: 3DES mit DEC (Delphi Encryption Compendium)
hm, sind nur 2 parameter... init mit passwort und cmCBCx als mode
zumal ja der rest stimmt aus '12345678901234567890' wird 'xxxxxxxx901234567890' wobei x für irgendwas steht meine delphi fuktion für sich selber geht reibungslos das en- und de- coden das selbe bei cryptool nur das beide bei der verschlüsselung unterschiedliche ergebnisse liefern... padding habe ich schon ausgeschlossen und wenn beide das verschlüsselte vom jeweils anderen entschlüsseln ist immer der doofe 8byte block der in beiden fällen auch noch gleich ist weiß nicht ob cryptool noch was am ersten block manipuliert... zb ein seed oder sowas, aber das kann ich mir nicht vorstellen... mfg Dano |
AW: 3DES mit DEC (Delphi Encryption Compendium)
Zitat:
Nja, falls hier wirklich keiner mehr eine Lösung findet, dann nur nicht aufgeben und Ruhe bewahren. Der Schöpfer vom DEC ließt hier öfters mal mit und wenn man etwas wartet, kommt da bestimmt nochmal eine Antwort. So, blos daß wir jetzt nichts falsch verstehn: Also das Ver-/Entschlüsseln innerhalb des DEC geht und nur das Ver-/Entschlüsseln zwischen DEC und diesem Crypttool will nicht so richtig? |
AW: 3DES mit DEC (Delphi Encryption Compendium)
Hmmm.... Das erste Byte eines String ist doch das Längenbyte, oder? kann das damit zusammenhängen?
|
AW: 3DES mit DEC (Delphi Encryption Compendium)
ja, ich bin immer ruhig... nur gerade aufgewühlt^^
also das string[0] die längenangabe sein kann weiß ich, ist aber nicht relevant da ich selber keine stringumwandlungen mache.... der DEC bekommt ganz einfache strings übergeben... also schließe ich das mal aus ich habe meine aufgabe mittlerweile gelöst... habe einfach die ersten 8 zeichen ignoriert und erst mit string[9] angefangen zu analysieren... also ob da text ist... aufgabe war ein BruteForce Angriff auf 3DES mit eingeschränktem schlüsselraum... bzw es waren 10 zeichen vom schlüssel bekannt nur leider kamm dann das andere problem zum vorschein... ab ca. $100 im text kam auch nur müll, also nach 256byte dann kommt immer die selbe 8Byte wiederholung bei dem was entschlüsselt werden sollte :( ohne grund... er hat ja die blöcke davor auch sauber entschlüsselt( abgesehen von den ersten 8byte) Zitat:
den oder die gefundenen schlüssel habe ich dann ich cryptool benutzt sie waren richtig und cryptool hat mir dann auch den ganzen text korrekt entschlüsselt... kann jetzt nicht alles poste da dies eine öffentliche aufgabe von mysterytwister ist und wäre uncool wenn man ne lvl2 chalange hier per googel gelöst bekommt aber irgendwas muß verkehrt an 3DES mit CBC sein im DEC 5.2... ich gehe auch nicht dafon aus das ich irgendwo einen bufferüberlauf habe der dann in andere bereiche reinschreibt/überschreibt hagen wird mich bestimmt gleich in der luft zerreisen weil er eigentlich keine support-sorgen haben möchte mit den Bibliotheken die er uns freundlicher weiße überlassen hat aber ungelöste/unlogische probleme mag ich auch nicht ;) mfg Dano |
AW: 3DES mit DEC (Delphi Encryption Compendium)
Zitat:
und ich gehe davon aus das außer padding beide nach RFC arbeiten sollten, habe auch beim debuggen nix bemerkt in DEC das da ein fehler sein könnte bin eher ratlos, bin zwar fertig mit der arbeit, aber würde das doch gerne noch plausiebel auflösen, falls ich mal wieder auf DEC und 3DES zurückgreifen muß mfg Dano |
AW: 3DES mit DEC (Delphi Encryption Compendium)
|
AW: 3DES mit DEC (Delphi Encryption Compendium)
ich habe nur folgende möglichkeiten
Zitat:
aber der algorythmus macht 8byte müll, dann 248byte alles super, und dann wieder periodischen unsinn kann sein das es an meinem programm liegt, aber ich habe nix auffälliges gemacht mit zeiger verbiegen oder sonstiges mfg Dano |
AW: 3DES mit DEC (Delphi Encryption Compendium)
ok, asche über mein haupt *duck*... hab ein fehler gefunden, der input-buffer war nur 256byte... und das einlesen der datei war damit corrupt :(
aber die ersten 8 byte sind immernoch unlogisch mfg Dano |
AW: 3DES mit DEC (Delphi Encryption Compendium)
Eventuell wird an der Stelle die Länge oder ein Hash mit eincodiert?
|
AW: 3DES mit DEC (Delphi Encryption Compendium)
habs gefunden^^
es gibt einen "Initialization vector" und der wird irgendwie randomm gefüllt wenn ich den nicht mit angebe habe den jetzt extra auf #0#0#0#0#0#0#0#0 gesetzt und jetzt ist auch der erste block lesbar :)
Delphi-Quellcode:
bin jetzt selber überrascht wie einfach das mit DEC ging^^
implementation
uses DECUtil, DECCipher, DECFmt; {$R *.dfm} // CrypTool padding bei CBC mit der anzahl der padding's... // also z.b. #4#4#4#4 wenn 4 aufgefüllt werden // Bei CBC wird bei Blockgröße auf/um 8 erweitert... // input=15byte, output=16... padding #1 // input=16, output=24... padding #8#8#8#8#8#8#8#8 // IV mit 8mal 0 initialisieren, sonst ist erster block müll #0#0#0#0#0#0#0#0 procedure TForm1.Button1Click(Sender: TObject); var DefCipherClass: TCipher_2DES; Temp: String; begin DefCipherClass:=TCipher_2DES.Create; DefCipherClass.Mode:=cmCBCx; Temp:='AAAAAAAAAAAAAAAA'; DefCipherClass.Init(Temp,#0#0#0#0#0#0#0#0); // passwort und IV setzen Memo1.Lines.Add(IntToStr(Length(Temp))+':'+Temp); Memo1.Lines.Add(TFormat_HEX.Encode(Temp)); // unsere nachricht + padding damit wir auf blockgröße 8 kommen Temp:='123456789012345'+#1; Memo1.Lines.Add(IntToStr(Length(Temp))+':'+Temp); Memo1.Lines.Add(TFormat_HEX.Encode(Temp)); Temp:=DefCipherClass.EncodeBinary(Temp); // verschlüsseln Memo1.Lines.Add(IntToStr(Length(Temp))+':'+Temp); Memo1.Lines.Add(TFormat_HEX.Encode(Temp)); DefCipherClass.Done; // aufräumen Temp:=DefCipherClass.DecodeBinary(Temp); // entschlüsseln Memo1.Lines.Add(IntToStr(Length(Temp))+':'+Temp); Memo1.Lines.Add(TFormat_HEX.Encode(Temp)); // jetzt müßte noch das padding entfernt werden DefCipherClass.Free; end; war am anfang schnell überfordert weil in den beispielen soooo viel drin stand und ich nur schwer das für mich benötigte rausfiltern konnt aber wenn man einmal den durchblick hat, ist das DEC einfach nur genial :) und wenn man noch die ganzen Memo1.Lines.Add weglässt ist es ein 10 zeilen code um mit 3DES zu verschlüsseln und gleich wieder zu entschlüsseln
Delphi-Quellcode:
das ist jetzt zu 100% kompatibel zu CrypTool
procedure TForm1.Button1Click(Sender: TObject);
var DefCipherClass: TCipher_2DES; Temp: String; begin DefCipherClass:=TCipher_2DES.Create; DefCipherClass.Mode:=cmCBCx; DefCipherClass.Init('AAAAAAAAAAAAAAAA',#0#0#0#0#0#0#0#0); // passwort und IV setzen Temp:='123456789012345'+#1; // text+ padding Temp:=DefCipherClass.EncodeBinary(Temp); // verschlüsseln DefCipherClass.Done; // aufräumen Temp:=DefCipherClass.DecodeBinary(Temp); // entschlüsseln // jetzt müßte noch das padding entfernt werden DefCipherClass.Free; end; danke euch für die hilfe :) mfg Dano |
AW: 3DES mit DEC (Delphi Encryption Compendium)
Ich hab mich mit DEC und DES jetzt nicht größer auseinander gesetzt, aber es ist AFAIK wichtig, dass ein Initialization Vector (pseudo-)zufällig ist. Genau das war IIRC eines der Probleme von WEP. WEP verwendet intern RC4, das prinzipiell OK ist, aber der IV war in den meisten Implementierungen vorhersehbar (in inkrementierter Counter). Und auf einmal hatte man einen wunderbare Known-Plaintext-Angriff...
BTW: try..finally solltest du einbauen... mfg Christian |
AW: 3DES mit DEC (Delphi Encryption Compendium)
mit try...finaly hast du ja recht,
aber das ist jetzt auch kein programm das ich anderen gebe, und selbst bei mir sind es oft nur paar versuche die es läuft das ich sogar das free fast immer weglasse^^ speicher gibt ja in hülle und fülle also für einen versuchsaufbau ist das ok, und jeder fehler der auftritt behandel ich selber im debugger bei ner schleife mit 10000 kommt das free natürlich mit rein, wenn ein fehler auftritt ist es belanglos für mich ob ein finaly block existiert... strg+f2 und fehler suchen ist kein ablauf der die fehler fremder benutzer auffangen muß/soll das mit dem IV ist natürlich schon wichig um den ersten block zu schützen, aber in der sache mußte ich mich an das system anpassen welches die referenz darstelt... also IV=00000000 mfg Dano |
AW: 3DES mit DEC (Delphi Encryption Compendium)
Ich würde dir trotzdem raten, try..finally zu verwenden. Und wenn es nur ist, um das zur Gewohnheit zu machen, damit dus dann, wenns wichtig ist, nicht vergisst. Das tut nicht weh, aber es hilft.
Das ist wie mit dem Autofahren. Da gibts auch Leute, die sich sagen "Da ist doch eh keiner hinter mir, da muss ich nicht blinken, wenn ich abbiege." Und das sind dann auch die, die das Blinken mal vergessen, wenns wichtig wäre. Die paar Kalorien, die man aufwenden muss, um den Blinker anzumachen, kann man schonmal investieren. Das sind noch nichtmal Erdnüsse... mfg Christian |
AW: 3DES mit DEC (Delphi Encryption Compendium)
Wenn man Speicher anfordert, hat man den auch wieder freizugeben. Also muss hier zwingend ein "try..finally Block" hin.
|
AW: 3DES mit DEC (Delphi Encryption Compendium)
ok^^
ich versuch mich zu bessern :) mfg Dano |
AW: 3DES mit DEC (Delphi Encryption Compendium)
sorry sehe den Thread erst jetzt:
Delphi-Quellcode:
Geht noch ein bischen übersichlicher und mit Schutzblöcken.
procedure TForm1.Button1Click(Sender: TObject);
var Temp: String; begin with TCipher_2DES.Create do try Mode := cmCBCx; Init('AAAAAAAAAAAAAAAA',#0#0#0#0#0#0#0#0); // passwort und IV setzen Temp := EncodeBinary('123456789012345'+#1); // verschlüsseln Temp := DecodeBinary(Temp); finally Free; end; end; Man muß bei der Adaption der Algorithmen mit dem DEC, ja mit jedweiger Crypto-Library, folgende wichtige Punkte hinterfragen 1.) welcher Algorithmus 2.) welcher Feedback Modus wurde benutzt, CBC, ECB, OFB usw. (in DEC cm???x oder cm???8) Modis 3.) welches Passwort-Präprocessing wurde gemacht, also zb. wird das Passort direkt benuzzt, wird es expandiert auf eine exakte Schlüsselbitanzahl, wird es noch mit Zufall + Hash Funktionen abgesichert usw. 4.) wird ein InitVector benutzt, wie wird er berechnet ? 5.) wird der PlanText vor der Verschl. noch modifiziert, zb. Padding auf Mehrfaches von Cipher.Context.BufferSize Bytes, werden Sonderzeichen entfernt oder eingebaut 6.) wird der CipherText nach der Verschl. nochmals umformatiert, zb. binär nach MIM64 Format usw. Die festlegung all dieser Punkte sind Aufrage des übergeordneten Protokolls das man implementieren möchte, also sowas wie PKCS# oder PGP usw. Das wäre, wenn es mit DEC weiter gegangen wäre, die Aufgabe vom nicht exitenten DEC Teil 3 gewesen. Also Basis,Formatierungen,sym. Kryptographie in Part I, große Zahlenbibliothek + asymmtrische Kryptographie in Part II und alle Protokolle wir PKCS#, Open/PGP usw. im Part III. Jetzt wird es auch verständlich warum in den Basisklassen des DECs, so wie es jetzt ist, eben keine Rücksicht auf diese verschiedenen Protokolle genommen wurde, wichtig war vom Design her nur das alles was grundsätzlich in den Protokollen benötigt wird schon im DEC Part I vorraus geplant wurde. Somit sollte es sehr einfach sein, mit dem jetzigen DEC und bischen Fleißarbeit in der Vorbereitungsphase, auf's konkrete Ziel zu adoptieren. Gruß Hagen |
AW: 3DES mit DEC (Delphi Encryption Compendium)
hallo hagen ;)
das mit der fleißarbeit vorher ist kein problem (erweckt eher den pioniergeist^^) nur in den beispielen ist soooo viel drin das ich zuerst den kopf in den sand stecken wollte... aber nach langem probieren hatte ich dann den "AHA"-effekt... dann wars relativ einfach und dein DEC ist super!!! leider bin ich auch nicht der profi, so das mir nicht jede semantik und alle möglichkeiten von delphi immer verständlich sind :/ aber eins muß ich sagen: hagen hat mich mit seinem IInteger/DEC unheimlich an wissen bereichert, und viele kryptorätsel hätte ich in delphi garnicht lösen können... gerade RSA z.B. also danke :) (warscheinlich hast du jeden tag 100 liebesbriefe von bekloppten wie mir in der post :D) so, was das 3DES hier betrifft, muß ich leider sagen das viele ihr eigenes süppchen kochen, also finde ich es soweit garnicht verkehrt das man den plaintext selber vorbereiten muß... das padding selber übernimmt, den IV macht auch jeder anders, weil ich das jetzt halbwegs verstanden habe was ich machen muß, finde ich es durchaus OK darum habe ich auch meine (end)lösung hier gepostet, um den leuten anleitung zu geben die das selbe problem haen wie ich^^ Was dein IInteger betrifft bin ich bischen traurig... es war das beste was mir über den weg gelaufen ist ;) hoffe du machst daran weiter, gerade jetzt wo 64bit voll da ist und vlt auch CUDA (ka ob ATI sowas bietet) mit reinzupacken... wobei da wieder dll's usw mit reinkommen, da denke ich das es nicht einfach ist... treiber-programmierung mit delphi habe ich auch nicht die ahnung... also das man das was cuda bietet direckt anspricht ohne über die c++ bibliothek... ok, ich schweif ab deine math-lib ist best ever lieber Hagen :) mfg Dano |
AW: 3DES mit DEC (Delphi Encryption Compendium)
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz