Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function XOR_File(const AFileName: string; const key: string): boolean;
- const
- PREFIX : string = '__';
- var
- F1, F2: File;
- W: Int64;
- ReadBufer, WriteBufer: array[1..1024] of byte;
- i, j, h, BytesRead: Integer;
- LongKey: string;
- begin
- if (fileexists(AFileName)) then
- begin
- AssignFile(F1, AFileName);
- Reset(F1, 1);
- AssignFile(F2, PREFIX + AFileName);
- Rewrite(F2, 1);
- for i := 0 to Length(key) do
- begin
- LongKey := LongKey + key;
- end;
- LongKey := LongKey + IntToStr(Length(LongKey)) + IntToStr(Length(Key));
- while (BytesRead <> 0) do
- begin
- BlockRead(F1, ReadBufer, sizeof(ReadBufer), BytesRead);
- for i := 0 to bytesRead do
- begin
- WriteBufer[i] := ReadBufer[i];
- for j := 0 to 7 do
- begin
- for h := 0 to Length(LongKey) - 1 do
- WriteBufer[j] := WriteBufer[j] xor Ord(LongKey[h]);
- end;
- end;
- BlockWrite(F2, WriteBufer, BytesRead);
- end;
- CloseFile(F1);
- CloseFile(F2);
- DeleteFile(PChar(AFileName));
- repeat
- if (not FileExists(AFileName)) then
- begin
- RenameFile(PREFIX + AFileName, AFileName);
- exit;
- end;
- until (not FileExists(AFileName));
- end;
- result := true;
- end;
Advertisement
Add Comment
Please, Sign In to add comment