![]() |
Dec 5.2 decodiert nicht richtig (Einstellungen)
Hi
ich will mit der DEC 5.2 einen Text (Passwörter) Verschlüsseln, in einer Datei speichern und bei Eingabe eines Masterpassworts wieder laden und entschlüsseln. Ich bin am verzweifeln. Habe mir viele Beispiele Angeschaut und soweit auch verstanden wie alles funktioniert. Ich poste mal meine En und Decrypt Funktionen, Sowie meine Aufrufe und die Ausgabe des Memos Encrypt:
Delphi-Quellcode:
Decrypt:
function Encrypt(const Value: String; const Password: String): String;
var Salt,SessionKey: Binary; MyCiph : TDECCipher; begin MyCiph := ValidCipher(TCipher_Rijndael).Create; Salt := RandomBinary(16); try SessionKey := THash_SHA1.KDF2(Password, Salt, MyCiph.Context.keysize, TFormat_Copy); MyCiph.Mode := cmCTSx; // ein 8Bit Feedback Modus ist für kurze Datenmengen sicherer MyCiph.Init(SessionKey); Result := TFormat_MIME64.Encode(Salt + MyCiph.Encodebinary(Value, TFormat_Copy)); finally MyCiph.Free; ProtectBinary(Salt); ProtectBinary(SessionKey); end; end;
Delphi-Quellcode:
Aufruf in einem Button:
function Decrypt(const Value: String; const Password: String): String;
var Salt,SessionKey: Binary; MyCiph : TDECCipher; begin MyCiph := ValidCipher(TCipher_Rijndael).Create; try Result := TFormat_MIME64.Decode(Value); Salt := Copy(Result, 1, 16); SessionKey := THash_SHA1.KDF2(Password, Salt, MyCiph.Context.KeySize, TFormat_COPY); MyCiph.Mode := cmCTSx; MyCiph.Init(SessionKey); MyCiph.Decode(Result[17], Result[1], Length(Result)-16); // inplaced Entschlüsselung SetLength(Result, Length(Result) -16); finally MyCiph.Free; ProtectBinary(SessionKey); end; end;
Delphi-Quellcode:
Und meine Ausgabe sieht dann nach 2x auf den Button Klicken so aus:
procedure TForm1.Button1Click(Sender: TObject);
var rein: String; crypt : String; raus : String; begin rein :='geheimer Text'; Memo1.Lines.Add('Klar: ' +rein); crypt := encrypt(rein,'passwort'); Memo1.Lines.Add('crypt: '+crypt); raus := decrypt(crypt,'passwort'); memo1.Lines.Add('Klar: '+raus); Memo1.Lines.Add('--------------'); end;
Code:
Zuletzt noch einige vom mir vermitete Fehlerquellen:
Klar: geheimer Text
crypt: ZooKq8i9/HSzDFymXfexXpMTNMMaduonMzbU+Rs= Klar: ⑴ጺ顭훝빇át³\¦] -------------- Klar: geheimer Text crypt: wWwmW7P+VFYTRTxD+rY+jpHGl2Cndb2HA8+09Rs= Klar: 콦䳑㷪឵瞐•VE<Cú -------------- 1. Bei Encrypt: .EncryptBinary Bei Decrypt: .Decrypt Ist das bei richtigen Parametern das gleiche? 2. .Init() wird nur mit einem Parameter aufgerufen, erwartet aber eig. mehrere. 3. .Context.KeySize heißt in den meisten Beispielen immer .MaxKeySize ... MaxKeySize gibt es aber in meiner DEC 5.2 nicht!!! 4. Wenn ich alle Strings als ByteRawString deklariere, bekomme ich als Ausgabe immer erstmal einige Fragezeichen und dann erst chinesische Zeichen. Falls jemand spontan eine lösung hat, dass mir nichtmehr alles auf chinesisch übersetzt wird, wäre ich dafür sehr dankbar. lg und vielen Dank Martin |
AW: Dec 5.2 decodiert nicht richtig (Einstellungen)
ich habe ewig nichts mehr mit DEC gemacht, kann es sein dass Du diese Problem hast?
![]() |
AW: Dec 5.2 decodiert nicht richtig (Einstellungen)
Hi
Das klingt nicht schlecht... setz mich gleich nochmal dran. Danke!! Ich habe Delphi XE3. lg Martin |
AW: Dec 5.2 decodiert nicht richtig (Einstellungen)
In dem Thread schreibt der Autor, dass es bei ihm funktioniert solange er ansi Zeichen verwendet.
Bei mir funktioniert noch nicht mal das. Ich habe aber gemerkt, dass es bei einzelnen Buchstaben funktioniert (meistens... wenn ich 10 mal auf den Button drücke, kommt ca. 9 mal meine Eingabe zurück ... ab und an mal ein beliebiges Zeichen). Weshalb ich vermute dass irgendwo etwas zu langes/kurzes ver bzw. entschlüsselt wird. Dadurch würde sich die Ausgabe ja verändern |
AW: Dec 5.2 decodiert nicht richtig (Einstellungen)
wie gesagt ich habe mich lange nicht mehr damit beschäftigt .... vielleicht kann negaH helfen.
|
AW: Dec 5.2 decodiert nicht richtig (Einstellungen)
Es scheint am MIME64 Encode & Decode zu liegen. Folgendes funktioniert:
Delphi-Quellcode:
Kommentiere ich jeweils die MIMI64 Zeilen wieder ein, kommt nur noch Murks raus.
function AESEncode(const Value: String; const Password: String): String;
var Cipher: TDECCipher; Salt, SessionKey: Binary; begin Cipher := ValidCipher(TCipher_Rijndael).Create; try Salt := RandomBinary(16); SessionKey := THash_SHA1.KDF2(Password, Salt, Cipher.Context.KeySize, TFormat_COPY); Cipher.Init(SessionKey); SetLength(Result, Length(Value)); Cipher.Encode(Value[1], Result[1], Length(Value) * SizeOf(Value[1])); // Result := ValidFormat(TFormat_MIME64).Encode(Salt + Result); Result := Salt + Result; Cipher.Done; finally Cipher.Free; end; end; function AESDecode(const Value: String; const Password: String): String; var Cipher: TDECCipher; Salt, SessionKey: Binary; begin // Result := ValidFormat(TFormat_MIME64).Decode(Value); Result := Value; Cipher := ValidCipher(TCipher_Rijndael).Create; try Salt := Copy(Result, 1, 16); SessionKey := THash_SHA1.KDF2(Password, Salt, Cipher.Context.KeySize, TFormat_COPY); Cipher.Init(SessionKey); Delete(Result, 1, 16); Cipher.Decode(Result[1], Result[1], Length(Result) * SizeOf(Result[1])); Cipher.Done; finally Cipher.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 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-2025 by Thomas Breitkreuz