segunda-feira, 23 de janeiro de 2012

Delphi - Encriptar/Desencriptar arquivos


Este procedimento permite encriptar e desencriptar arquivos de qualquer tipo. O código de encriptação é bastante simples, por isso pode ser melhorado, sendo este apenas um exemplo de como pode ser feito.

procedure EnDecripArq(INFName, OutFName : String; Chave : Word);
var InMS, OutMS : TMemoryStream;
      I : Integer;
      C : byte;
begin
 InMS := TMemoryStream.Create;
 OutMS := TMemoryStream.Create;
try
 InMS.LoadFromFile(INFName);
 InMS.Position := 0;
  for I := 0 to InMS.Size - 1 do
    begin
       InMS.Read(C, 1);
       C := (C xor not(ord(chave shr I)));
       OutMS.Write(C,1);
    end;
      OutMS.SaveToFile(OutFName);
finally
  InMS.Free;
  OutMS.Free;
end;
end;

Exemplo de utilização:

Inicie um novo projeto no Delphi, coloque o procedimento EnDecripArq para uma unit e logo após dois TButtons (Button1 e Button2) no formulário.
No evento OnClick do Button1 chama-se o procedimento EnDecripArq, sendo que os parâmetros são:o path(caminho) do e o nome do arquivo ,o path(caminho) para onde o arquivo deve ser encriptado e uma chave de encriptação. Ficará da seguinte maneira:

procedure TForm1.Button1Click(Sender: TObject);
begin
  EnDecryptFile('c:\arquivo.txt', 'c:\arquivo1.txt', 12);
  ShowMessage('O Arquivo foi Encriptado!');
end;

No evento OnClick do Button2 deve-se chamar o mesmo procedimento EnDecripArq, para que o arquivo seja desencriptado.Os parâmetros são: o path e o nome do arquivo encriptado, o path e o nome para onde o arquivo deve ser desencriptado e a chave de encriptação usada para encriptar o arquivo original. Veja como fica abaixo:
  
procedure TForm1.Button2Click(Sender: TObject);
begin
  EnDecryptFile('c:\ficheiro1.txt', 'c:\ficheiro2.txt', 12);
  ShowMessage('O Arquivo foi Desencriptado!');
end;

Nenhum comentário:

Postar um comentário