Du machst garnichts falsch !
Unter den vielen Änderungen im
DEC 5.x verglichen zur Version 3.x sind im Besonderen die konzeptionellen Änderungen wichtig. Das sind Änderungen am Konzept zu Gunsten höherer Anwendungssicherheit (Fehlervermeidung durch den Programmierer) und die "Abspeckungs-" Maßnahmen zu nennen.
In Version 3.x gab es zb. zwei verschiedene Möglichkeiten einen Cipher zu initialisiren
a.) .Init()
b.) .InitKey()
Während .Init() die Standardmethode zur Initialisierung eines Ciphers ist und dabei zu langes Keymaterial einfach abgeschnitten hat, benutzte Methode .InitKey() eine interne Transformation per Hashfunktion vom Keymaterial um dieses auf die erforderliche Passwortgröße des Ciphers umzuwandeln.
Diese Umwandlung erfolgt heutzutage durch sogennate KDF = Key Derivation Function. Der Trend geht absehbar in diese Richtung. Allerdings sind die benutzten Verfahren so unterschiedlich das es faktisch unmöglich ist dise alle im
DEC zu integrieren. Es entsteht eine Zwickmühle, entweder die vielen KDFs ins
DEC integrieren und damit die Abspeckmaßnahmen zunichte machen und wieder eine "überfrachtete" Library zu bauen, oder einfach nur die notwendigen Mittel integrieren und den letzten Schliff muß der Endanwender in par Zeilen Sourcecode selber machen. Ich habe mich für letzteres entschieden, weil nur so die Zielsetzung das
DEC 5.x einfacher werden sollte, erreichbar war.
Im
DEC 5.x gibt es also die Methode .InitKey() nicht mehr. Methode .Init() und die ganze Benutzung der Cipher seber wird durch eine FSM=Finite State Machine nun zusätzlich abgesichert. Dh. es sind mehr Überprüfungen, Plausibilitätschecks im Version 5.x integeriert. Dies erhöht die Sicherheit vor Fehlbenutzungen der Cipher durch Endanwender wie Dich.
Du müsstest also die Art & Weise des Keysetups aus dem
DEC 3.x in Version 5.x manuell nachbauen, oder aber wie ich es empfehlen würde darauf verzichten und neuere im
DEC 5.x unterstütze Wege einschlagen.
Zb.
Delphi-Quellcode:
var
Salt: Binary;
begin
Salt := RandomBinary(16);
with TCipher_Rijndael.Create do
try
Mode := cmCBCx;
Init(THash_SHA1.KDFx(APassword, Salt, Context.KeySize));
En/DecodeBlaBla();
finally
Free;
end;
end;
Schaue dir auch mal des Project DECTest.dpr im Ordner \DECx\PART_I\DECtest\ an. Dort findest du einen Vorschlag wie man Dateien sicherer verschlüsseln kann.
Und noch eines ist ganz wichtig. In meinem Rijndael aus Version 3.x wurde noch das originale KeySetup des Rijndaels benutzt. Erst später in Version 5.1c (<- wichtig) habe ich das keySetup auf den neuesten Stand nach AES gebracht (wurde ja auch 3 -> dreimal -> im AES Standard geändert !!). Das bedeutet Rijndael im
DEC 3.x ist nicht kompatibel im KeySetup zum
DEC 5.1c !!
Gruß Hagen