2012-04-12 96 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