2012-04-12 5 views
0

Ich bekomme TSimpleCodec.Begin_EncryptMemory - Wrong Modus Ausnahme wile Ausführung des folgenden Codes. Ist es etwas falsch?TSimpleCodec.Begin_EncryptMemory - Falscher Modus

FLibrary := TCryptographicLibrary.Create(Self); 
FCodec := TCodec.Create(Self); 
FCodec.CryptoLibrary := FLibrary; 
FCodec.BlockCipherId := 'native.AES-256'; 
FCodec.ChainModeId := 'native.ECB'; 
FCodec.Password := 'password'; 
plain := 'The plain text'; 
FCodec.EncryptString(plain, astr); 
FCodec.DecryptString(dec, astr); 

Antwort

0

Beim Initialisieren des Codecs über den Laufzeitcode müssen Sie die StreamCipherId festlegen. Fügen Sie die folgende Zeile kurz vor dem Festlegen der BlockCipherId ein.

Sie müssen dies nicht tun, wenn Sie den Codec mit Entwurfszeitwerten einrichten. Zur Design-Zeit ist es viel einfacher. Legen Sie die veröffentlichten Eigenschaften nach Bedarf fest.

Das Demo-Programm für Delphi 2010 gibt ein Beispiel in den Methoden TmfmLockbox3_Demo.FormCreate() und TmfmLockbox3_Demo.actCustomBlockEncryptExecute().

Lesen Sie auch die on-line help darüber.

Als allgemeiner Hinweis, wenn Sie nur das Demo-Programm anschauen und/oder die Online-Hilfe lesen, werden Sie selten zu StackOverflow kommen müssen. Wenn in der Dokumentation Fehler auftreten, poste bitte einige konstruktive, umsetzbare Vorschläge in den LockBox-Foren, um die Dokumentation zu verbessern (Demos + Online-Hilfe).

+1

Ich bemerkte, dass der "falsche Modus" auch erscheint, wenn Sie vergessen, das Passwort anzugeben. Einfach "FCodec.Password: =" im obigen Beispiel auskommentieren. Ich empfehle eine spezifische Fehlermeldung. –

+0

Guter Punkt. Ich werde mir das ansehen. –