0

次のコードを実行すると、TSimpleCodec.Begin_EncryptMemory - Wrong mode 例外が発生します。それは何か間違っていますか?

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);
4

1 に答える 1

0

ランタイム コードでコーデックを初期化する場合、StreamCipherId を設定する必要があります。BlockCipherId を設定する直前に次の行を挿入します。

 FCodec.StreamCipherId := BlockCipher_ProgId;

設計時の値でコーデックを設定している場合は、これを行う必要はありません。設計時に行う方がはるかに簡単です。必要に応じて、公開されたプロパティを設定するだけです。

Delphi 2010 のデモ プログラムでは、メソッド TmfmLockbox3_Demo.FormCreate() および TmfmLockbox3_Demo.actCustomBlockEncryptExecute() で例が示されています。

また、オンライン ヘルプも参照してください。

一般的なヒントとして、デモ プログラムを見たり、オンライン ヘルプを読んだりするだけであれば、StackOverflow にアクセスする必要はほとんどありません。ドキュメントに不備がある場合は、LockBox フォーラムに建設的で実用的な提案を投稿して、ドキュメントを改善してください (デモ + オンライン ヘルプ)。

于 2012-04-13T03:08:55.837 に答える