2012-04-12 5 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 : ="를 주석 처리하십시오. 특정 오류 메시지를 제안합니다. –

+0

좋은 지적. 나는 그것을 보게 될 것이다. –