Buscar

Encriptando um arquivo ini

Código

O método que vou mostrar não encripta o arquivo em si, mas as informações contidas nele. Este arquivo continua sendo um IniFile, mas suas informações não podem ser lidas por outra aplicação qualquer.
  Um dos métodos que pensei para sua aplicação ler as informações do IniFile era desencriptar as informações em um arquivo temporário e a aplicação se utilizar destes parâmetros, desta forma se a aplicação fosse encerrada de forma brusca - ctrl + alt + del - este arquivo não era apagado ficando a disposição para leitura.
  Com este método não é criado qualquer arquivo temporário deste IniFile para ler estas informações. Ficando, assim, mais seguras as informações do IniFile.
  Estas instruções podem ser colocadas em uma "UnitGeral" (unit com todas as funções genéricas de sua aplicação). Por isso é que reservo as variáveis na linha "procedure" e "function".

  Para codificar seu IniFile usaremos um código bem simples, mas pode ser usado qualquer código: HASH, BLOWFISH, BASE64...

  function Codifica(const Str1: String): String;
  var
  Mascara, Str2 : String;
  PonM, PonS : Byte;
  begin
    Mascara := 'ToCaiA';
    Str2 := '';
    PonM := 9;
    for PonS:=1 to length(Str1) do
    begin
      AppendStr( Str2, Chr( Ord(Str1[PonS]) Xor Ord(Mascara[PonM])));
      Inc( PonM);
      if PonM > Length(Mascara) then
      begin
        PonM:=1;
      end;
      Result := Str2;
    end;
  end;

  Para gravar as informações de sua aplicação para o IniFile use:

  procedure GravaIni(Colchete, Parametro, Texto: String);
  var
    ArqIni : TIniFile;
  begin
    ArqIni := TIniFile.Create('c:windowsSYSSistema.Ini');
    Try
      // Gravar as informações de forma encriptada
      ArqIni.WriteString(Codifica(Colchete), Codifica(Parametro), Codifica(Texto));
  Finally
    ArqIni.Free;
    end;
  end;

  Usa-se desta forma: GravaIni('Computador', 'CPU', Edit1.Text);

  Para ler as informacoes do IniFile e usar em sua aplicacao use:

  function LeIni (Colchete, Parametro: String; Var Texto: String): String;
  var
    ArqIni : TIniFile;
  begin
    ArqIni := tIniFile.Create('c:windowsSYSSistema.Ini');
    Try
      // Ler as informações de forma encriptada
      Texto := Codifica(ArqIni.ReadString(Codifica(Colchete), Codifica(Parametro), Texto);
      Result := Texto;
    Finally
      ArqIni.Free;
    end;
  end;

  REPAREM QUE NESTE PONTO TROQUEI "PROCEDURE" POR "FUNCTION" PORQUE DESTA FORMA EU OBTENHO AS INFORMAÇÕES E POSSO PASSAR PARA UM EDIT DIRETAMENTE, SEM TER QUE ARMAZENAR EM UMA VARIÁVEL E DEPOIS MOSTRAR EM UM EDIT.

  Use-se desta forma:

  Var
    Texto: String;
    ...
    Edit2.Texto:= LeIni('Computador', 'CPU', Texto);


Por: Murilo Cunha
Fonte: Revista Active Delphi
 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Arquivos
Adicionada dia: 30/12/04
Por: Daniel_Figueiredo
Visualizada: 4935 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009