Нашел. Надо
be.Flush; сделать что бы запись завершить кодированных данных:
- Код: Выделить всё
var
Form1: TForm1;
sTemp : string;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var be : TBlowFishEncryptStream;
ss : TStringStream;
se : TStringStream;
begin
try
ss := TStringStream.Create('4 15.02.2017 05:26:17 ТЕСТ МОДУЛЬ АНАЛИЗА. 15.02.2017 5:26:06;ТЕКСТ;');
se := TStringStream.Create('');
be := TBlowFishEncryptStream.Create(Edit1.Text,se);
be.WriteBuffer(ss.DataString[1],ss.Size);
be.Flush;
sTemp:=se.DataString;
Memo1.Text:=se.DataString;
be.free;
finally
ss.Free;
se.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var bd : TBlowFishDeCryptStream;
tmp : string;
se : TStringStream;
begin
try
se := TStringStream.Create(sTemp);
bd := TBlowFishDeCryptStream.Create(Edit1.Text,se);
SetLength(tmp,bd.Size);
bd.Read(tmp[1],bd.Size);
Memo1.Text:=tmp;
bd.free;
finally
end;
Теперь надо разобраться с тем как использовать readbuffer
Добавлено спустя 14 минут 57 секунд:Шифрование файла еще не сделал, но вот с буфером работа:
- Код: Выделить всё
var
Form1: TForm1;
sTemp : ansistring;
lentmp : integer;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var be : TBlowFishEncryptStream;
se : TStringStream;
tmp : ansistring;
begin
try
se := TStringStream.Create('');//куда пойдут шифрованные данные
tmp:=Edit1.Text;//ключ
be := TBlowFishEncryptStream.Create(tmp,se);
tmp:='4 15.02.2017 05:26:17 NT';//данные которые шифруем
lentmp:=Length(tmp);
be.WriteBuffer(tmp[1],length(tmp));//пишем в поток
be.Flush;//финализируем
sTemp:=se.DataString;
Memo1.Text:=se.DataString;
be.free;
finally
se.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var bd : TBlowFishDeCryptStream;
tmp : ansistring;
se : TStringStream;
begin
try
se := TStringStream.Create(sTemp);//шифрованная строка
tmp:=Edit1.Text;//ключ
bd := TBlowFishDeCryptStream.Create(tmp,se);//дешифруем
if Assigned(bd) then begin
tmp:='';
SetLength(tmp,bd.Source.Size);//размер буфера под расшифрованные данные
bd.ReadBuffer(tmp[1],bd.Source.Size);//считываем
Memo1.Text:=tmp;
end;
bd.free;
finally
se.Free;
end;
end;
Добавлено спустя 26 минут 11 секунд:Шифрование файла:
- Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var be : TBlowFishEncryptStream;
fSource : TFileStream;//файл источник
fEncrypt : TFileStream;//файл шифрованный
tmp : array of byte;
begin
try
fSource := TFileStream.Create(FileNameEdit1.FileName,fmOpenRead);//файл который шифруем
fSource.Seek(0,soBeginning);
fEncrypt := TFileStream.Create(FileNameEdit2.FileName,fmCreate or fmOpenWrite);//файл куда шифруем
setlength(tmp,fSource.Size);
fSource.ReadBuffer(tmp[0],fSource.Size);//считываем данные в буфер
be := TBlowFishEncryptStream.Create(Edit1.Text,fEncrypt);
be.WriteBuffer(tmp[0],length(tmp));//шифруем
be.Flush;//финализируем
be.free;
setlength(tmp,0);
finally
fSource.Free;
fEncrypt.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var bd : TBlowFishDeCryptStream;
tmp : array of byte;
fDecrypt : TFileStream;//файл, куда расшифровываем
fEncrypt : TFileStream;//файл шифрованный
begin
try
fEncrypt := TFileStream.Create(FileNameEdit2.FileName,fmOpenRead);//шифрованный файл
fDecrypt := TFileStream.Create(FileNameEdit3.FileName,fmCreate or fmOpenWrite);//расшифрованный файл
bd := TBlowFishDeCryptStream.Create(Edit1.Text,fEncrypt);//дешифруем
setlength(tmp,bd.Source.Size);
bd.ReadBuffer(tmp[0],bd.Source.Size);//считываем расшифрованные данные в буфер
fDecrypt.WriteBuffer(tmp[0],bd.Source.Size);//пишем в файл
bd.free;
setlength(tmp,0);
finally
fEncrypt.Free;
fDecrypt.Free;
end;
end;