Доброго дня. Распаковываю файл ZLibом:
| Код | function Decompress_Zlib(const inStream, outStream :TStream; StartPos: integer):boolean; var Count: integer; ZStream: TDecompressionStream; Buffer: array [0..1024] of byte; begin inStream.Seek(StartPos, soFromBeginning); outStream.Seek(0,soFromBeginning); ZStream:=TDecompressionStream.Create(InStream); try while true do begin Count:=ZStream.Read(Buffer, sizeof(buffer)); if Count<>0 then OutStream.WriteBuffer(Buffer, Count) else Break; end; Result:=True; Except Result:=False; ZStream.Free; exit; end; ZStream.Free; end; // function GenerickExtract(Filename: string; sPos: integer): boolean; var f,f1: TFileStream; begin result := false; try f := TFileStream.Create(Filename, fmShareDenyRead); f1 := TFileStream.Create(Filename+'.unpk', fmCreate); except exit; end; try (* *) result := Decompress_Zlib(f, f1, sPos); (* *) finally f.Free; f1.Free; end; end;
|
подскажите, как перед распаковкой каждого блока расшифровывать его. Исходный файл зашифрован алгоритмом XOR, ключ известен. используется таблица перестановок. -- В интернете полно информации по XOR но в основном по работе со строками... |