Как мне зашифровать данные в TMemoryStream в OpenSSL?

#delphi #openssl #aes

#delphi #openssl #aes

Вопрос:

Я использую следующий код. F2, F3 — TMemoryStream, но except улавливает исключение StreamReadError

 var F2, F3: TMemoryStream;
begin 
    F2 := TMemoryStream.Create(); 
    F3 := TMemoryStream.Create();
    F2.LoadFromFile(File);    
    EncUtil := TEncUtil.Create;
    try
        EncUtil.UseBase64   := True;
        EncUtil.Passphrase  := 'пароль';
        EncUtil.Cipher      := 'AES-256';
        EncUtil.Encrypt(F2, F3);
    except on E : Exception do
        ShowMessage(E.ClassName ' поднята ошибка, с сообщением : ' E.Message);
    end;
    // More code
end;
 

Что может быть не так?

Комментарии:

1. Пожалуйста, покажите, как вы определяете F2 и F3 .

2. var F2, F3: TMemoryStream; ...... F2:=TMemoryStream.Create(); F2.LoadFromFile(File); F3:=TMemoryStream.Create();

3. Вы забыли сбросить позицию после загрузки. Но зачем использовать поток памяти, если вы хотите зашифровать файл?

4. Вы также можете просто использовать F2: TStream и F2 := TFileStream.Create(aFile, fmOpenRead or fmShareDenyWrite)