Hi walter_b,
zunächst mal aus der DECFmt.pas:
Delphi-Quellcode:
TFormat_Copy = class; // copy input to output, it's the Default Format, eg FormaClass = nil
TFormat_HEX = class; // HEXadecimal in UpperCase
TFormat_HEXL = class; // HEXadecimal in Lowercase
TFormat_MIME32 = class; // MIME like format for Base 32
TFormat_MIME64 = class; // MIME Base 64 format
TFormat_PGP = class; // PGP's MIME Base 64 with PGP's Checksums
TFormat_UU = class; // Unix UU Base 64
TFormat_XX = class; // Unix XX base 64
TFormat_ESCAPE = class; // Escaped Strings
Jetzt zu Deinem Source, da hast Du leider per Copy-Paste, ohne es zu verstehen, meinen Blödsinn einfach übernommen
Probier mal folgendes
Delphi-Quellcode:
function EncodeText(Input, Key: String): String;
begin
with TCipher_1DES.Create do
try
Mode := cmECBx;
Init(Key);
Result := EncodeBinary(Input); // bitte bei EncodeText() auch EncodeBinary nutzen und NICHT DecodeBinary!
finally
Free;
end;
end;
function DecodeText(Input, Key: String): String;
begin
with TCipher_1DES.Create do
try
Mode := cmECBx;
Init(Key);
Result := DecodeBinary(Input); // hier stand bei Dir DecodeBinary('abc', TFormat_HEXL);
finally
Free;
end;
end;
Beachte:
1) Hinter EncodeBinary/DecodeBinary kannst Du einen zweiten Parameter angeben, z.B. EncodeBinary(Input, TFormat_HEXL). Damit werden die Eingabe/Ausgabedaten formatiert, d.h. es wird ein bestimmtes Eingabeformat erwartet bzw. ausgegeben.
2) Dein Fehler kommt dann auch daher: Du gibst, wie in meiner ersten Antwort, TFormat_HEXL an - aber bei Deinem Source wird etwas anderes genutzt, als Daten im HEX Format...
3) Zudem solltest Du, wenn Du schon den Key per Funktionsparameter übergibst, auch den Input/Outputtext per Parameter übergeben. Sonst kann die Funktion ja nur den
-einen- vorgegeben Text ver/entschlüsseln.
4) Du verwendest einfaches DES ohne SALT und IV (Initialisierungsvektor). Hart gesagt: Dann brauchst Du im Prinzip auch garnicht zu verschlüsseln.
Zitat von
walter_b:
Wobei hier der "Key" der Hash-Wert ist, welcher vorhin bei EncodeBinary rauskam.
Falsch. Das ist ganz sicher kein Hash...
Die Funktion arbeitet nach dem Prinzip:
Input = Eingabe-Text
Key = Passwort im Klartext (bei beiden Funktionen!)
Result = Ergebnis
Zitat von
walter_b:
Zitat von
Delphi:
... raised
exception class EDECExeption with message 'Input is not an valid HEXL Format.'. Process stopped.
Was soll dieser Schwachsinn? Wieso kann ich es mit diesem Wert verschlüsseln, wenn ich es mit dem selben Wert nicht rückverschlüsseln kann? Wie kann ich diese Problem umgehen?
Das frage ich mich auch. Willst Du Deinen Blödsinn etwa dem Delphi Compiler or dem Autoren anlasten?
Gruß Assertor