EReadError when using blowfish encryption/decription
Original Reporter info from Mantis: zamronypj @zamronypj
-
Reporter name: Zamrony P. Juhara
Original Reporter info from Mantis: zamronypj @zamronypj
- Reporter name: Zamrony P. Juhara
Description:
Reading encrypted string before freeing TBlowFishEncryptStream instance cause EReadError when decrypting. Reading encrypted string after freeing TBlowFishEncryptStream instance when decrupting does not raise EReadError.
Steps to reproduce:
Compile and run following code
{$mode objfpc}{$H+}
uses
Classes,
BlowFish;
var
en: TBlowFishEncryptStream;
de: TBlowFishDeCryptStream;
s1, s2: TStringStream;
key,value, temp, encrypted: String;
begin
key := 'testkey';
value := 'this is a string';
s1 := TStringStream.Create('');
try
en := TBlowFishEncryptStream.Create(key,s1);
try
en.WriteAnsiString(value);
//why reading encrypted string here cause EReadError when decrypting?
encrypted := s1.DataString;
finally
en.Free;
end;
//reading encrypted string here does not cause EReadError when decrypting
//encrypted := s1.DataString;
writeLn('encrypted: ' + encrypted);
finally
s1.Free;
end;
s2 := TStringStream.Create(encrypted);
try
de := TBlowFishDeCryptStream.Create(key, s2);
try
temp := de.ReadAnsiString;
writeLn('decrypted: ' + temp);
finally
de.Free;
end;
finally
s2.Free;
end;
end.
Mantis conversion info:
- Mantis ID: 36343
- OS: Linux
- OS Build: Ubuntu 16.04
- Version: 3.0.4