Zitat von
Assertor:
Jetzt zu Deinem Source, da hast Du leider per Copy-Paste,
ohne es zu verstehen, meinen Blödsinn einfach übernommen
Da hast du dich wohl diesmal, so leid es mir tut, getäuscht. Nur weil ich den Titel der Funktion nicht auf die darin enthaltene Funktion angepasst habe, heisst das nicht, dass ich es nicht verstanden habe. Mir ging es zuerst einmal darum, das ganze zum laufen zu bringen, und erst dann den "Zuckerguss" zu machen. Und noch kurz wegen dem nicht verstehen... Mittlerweile habe ich die ganze
DEC auseinander genommen, um den Vorgang von EncodeBinary zu verstehen...
Zitat von
Assertor:
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.
Es ist mein Ziel, nur diesen einen Input-Text zu verschlüsseln. Einzig und alleine der Key variiert.
Zitat von
Assertor:
4) Du verwendest einfaches DES ohne SALT und IV (Initialisierungsvektor). Hart gesagt: Dann brauchst Du im Prinzip auch garnicht zu verschlüsseln.
Die Verschlüsselung, die ich hier
nachstellen will, stammt nicht von mir. Von da her spielt es keine Rolle, ob die Verschlüsselung Sinn macht, oder nicht.
Zitat von
Assertor:
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?
Tut mir leid, dass ich mich da unklar ausgedrückt habe... "Was soll der Schwachsinn, welchen ich hier wieder zusammengebaut habe" wäre die vollständige Frage gewesen, wollte niemandem etwas anhängen.
Und jetzt noch zurück zum Code (ich verwende der Klarheit halber wieder die statische Funktion mit einem Parameter:
Delphi-Quellcode:
function EncodeText(Key: String): String;
begin
with TCipher_1DES.Create do
try
Mode := cmECBx;
Init(Key);
Result := EncodeBinary('KGS!@#$%');
finally
Free;
end;
end;
Diese Funktion erstellt mir aus einem ziemlich verunstalteten (undruckbare
ASCII-Zeichen und doch sehr spezielle, andere Sonderzeichen) String einen Hexadezimal-Hash mit einer Länge von 16 Stellen (z.b. '90004151ADA7B438' ). Da der Inputtext fest gesetzt ist, ist also der Key von Bedeutung.
Da DecodeText allerdings auch den Key benötigt, funktioniert in diesem Falle die Umkehrfunktion nicht, oder? Oder ist es möglich, den Key anhand des Input- und des Output-textes rauszufinden?