Как обнаружить ошибку расшифровки? У меня есть следующий тестовый код:
procedure TForm1.Button1Click(Sender: TObject);
var
plainms, cipherms: TMemoryStream;
tempstr: string;
begin
plainms := TMemoryStream.Create;
cipherms := TMemoryStream.Create;
try
cipherms.LoadFromFile('rwcx.ini');
Codec1.Password := '122rkdkdk';
try
Codec1.DecryptStream(plainms, cipherms);
except on E: Exception do
showmessage(e.Message);
end;
plainms.Position := 0;
SetLength(tempstr, plainms.Size * 2);
BinToHex(plainms.Memory, PChar(tempstr), plainms.Size);
showmessage(tempstr);
finally
plainms.Free;
cipherms.Free;
end;
end;
Файл «rwcx.ini» — это обычный текстовый файл, который не содержит зашифрованные данные. Я использую AES 256 с CBC и версию 3.5 Lockbox, установленную с «GetIt». Я ожидал, что поток памяти plainms будет пустым или возникнет исключение, так как расшифровка гарантированно завершится ошибкой. Вместо этого я получаю мусор в равнинах и без исключения.
Как определить, что расшифровка не удалась? Я должен уметь обнаруживать неверные пароли или поврежденные входные данные. Что мне не хватает?