Вызов подпрограмм LockBox3 во время выполнения

Я скачал и установил TurboPack LockBox3 с GitHub в RAD Studio XE6. Если я размещаю нужные компоненты на форме, то все работает правильно. Однако мне нужно иметь возможность вызывать мои процедуры шифрования во время выполнения, поэтому для целей тестирования я создал форму с парой полей редактирования и кнопкой. Обработчик события кнопки содержит следующее:


Codec1 := TCodec.Create(nil);
Codec1.CryptoLibrary := TCryptographicLibrary.Create(Codec1);
Codec1.StreamCipherId := uTPLb_Constants.BlockCipher_ProgId;
Codec1.cipher := 'native.AES-256';
Codec1.ChainMode := uTPLb_Constants.CBC_ProgId;
Codec1.Password := Password;
tmp := LBEdit1.Text;  // fetch the plaintext from form
if tmp <> '' then
begin
    Try
        Codec1.Reset;
        Codec1.EncryptString(tmp, ciphertext, TEncoding.UTF8);
        Edit1.Text := string(ciphertext);  // display the ciphertext
    Finally
        Codec1.Free;
    End;
end;

Он компилируется нормально, но во время выполнения я получаю сообщение об ошибке «TSimpleCodec.Begin_EncryptMemory — алгоритмы не установлены». Я предполагаю, что я что-то неправильно инициализировал, но не вижу, что. Может ли кто-нибудь указать мне в правильном направлении, пожалуйста?


person Angus Crossley    schedule 08.10.2015    source источник


Ответы (1)


У меня есть это. Правильный код должен быть:

    Codec1 := TCodec.Create(nil);
    CLib := TCryptographicLibrary.Create(nil);
    Codec1.CryptoLibrary := CLib;
    Codec1.StreamCipherId := uTPLb_Constants.BlockCipher_ProgId;
    Codec1.BlockCipherId := 'native.AES-256';
    Codec1.ChainModeID := uTPLb_Constants.CBC_ProgId;
    Codec1.AsymetricKeySizeInBits := 1024;
    Codec1.Password := Password;

Я инициализировал Cipher, а не BlockCipherID, как указано выше.

person Angus Crossley    schedule 08.10.2015