2012-04-12 97 views
0

我得到了TSimpleCodec.Begin_EncryptMemory - 错误的模式异常执行以下代码。有什么问题吗?TSimpleCodec.Begin_EncryptMemory - 错误模式

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

回答

0

当通过运行时代码初始化编解码器时,需要设置StreamCipherId。在设置BlockCipherId之前插入以下行。

FCodec.StreamCipherId := BlockCipher_ProgId; 

如果您使用设计时值设置编解码器,则不需要执行此操作。在设计时做起来要容易得多。只需根据需要设置已发布的属性。

Delphi 2010演示程序给出了TmfmLockbox3_Demo.FormCreate()和TmfmLockbox3_Demo.actCustomBlockEncryptExecute()方法的示例。

另外请阅读on-line help

作为一般性提示,如果您只是看演示程序和/或阅读在线帮助,则很少需要访问StackOverflow。如果文档中存在缺陷,请在LockBox论坛上发布一些建设性的可行建议,以改进文档(演示+在线帮助)。

+1

我注意到,如果忘记指定密码,'错误模式'也会出现。在上面的例子中只是注释掉“FCodec.Password:=”。我建议一个特定的错误消息。 – 2012-06-07 13:32:10

+0

好点。我会看看那个。 – 2012-06-08 00:22:38