Redfern_89

truecrypt:DDD

Oct 26th, 2019
367
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.29 KB | None | 0 0
  1. function XOR_File(const AFileName: string; const key: string): boolean;
  2. const
  3.  
  4.   PREFIX : string = '__';
  5. var
  6.   F1, F2: File;
  7.   W: Int64;
  8.   ReadBufer, WriteBufer: array[1..1024] of byte;
  9.   i, j, h, BytesRead: Integer;
  10.   LongKey: string;
  11. begin
  12.   if (fileexists(AFileName)) then
  13.   begin
  14.     AssignFile(F1, AFileName);
  15.     Reset(F1, 1);
  16.     AssignFile(F2, PREFIX + AFileName);
  17.     Rewrite(F2, 1);
  18.    
  19.     for i := 0 to Length(key) do
  20.     begin
  21.       LongKey := LongKey + key;
  22.     end;
  23.     LongKey := LongKey + IntToStr(Length(LongKey)) + IntToStr(Length(Key));  
  24.  
  25.     while (BytesRead <> 0) do
  26.     begin
  27.       BlockRead(F1, ReadBufer, sizeof(ReadBufer), BytesRead);
  28.       for i := 0 to bytesRead do
  29.       begin
  30.         WriteBufer[i] := ReadBufer[i];
  31.         for j := 0 to 7 do
  32.         begin
  33.           for h := 0 to Length(LongKey) - 1 do
  34.             WriteBufer[j] := WriteBufer[j] xor Ord(LongKey[h]);
  35.         end;
  36.       end;
  37.       BlockWrite(F2, WriteBufer, BytesRead);
  38.     end;
  39.  
  40.     CloseFile(F1);
  41.     CloseFile(F2);
  42.    
  43.     DeleteFile(PChar(AFileName));
  44.     repeat
  45.       if (not FileExists(AFileName)) then
  46.       begin
  47.         RenameFile(PREFIX + AFileName, AFileName);
  48.         exit;
  49.       end;
  50.     until (not FileExists(AFileName));
  51.   end;
  52.  
  53.   result := true;
  54. end;
Advertisement
Add Comment
Please, Sign In to add comment