Extraído do site: http://www.planetadelphi.com.br

Criando um Componente para Criptografia de Dados

Neste artigo vamos aprender à criarmos nosso próprio componente para criptografia de dados. Que serve apenas para Criptografar e Desciptograsfar seqüências de caracteres.

No menu Component do Delphi, escolha o item New Component. Na janela New Component, altere o campo Ancestor Type para "Tcomponent", e o campo Class Name para "Tcriptografia". Clique no botão install e, nas próximas janelas, confirme a montagem e complicação da package , clicando nos botões Yes e Ok.

Agora o Delphi criou uma Unit chamada de Criptografia, que conterá o código fonte do nosso novo componte.À interface da Unit, logo antes da declaração da procedure Register, adicione as seguintes linhas.


Const
C1= 33598;
C2=24219;

Estas constantes são utilizadas nos cálculos das rotinas de criptografia e podem ser alteradas conforme o gosto do leitor.

Criaremos apenas uma propriedade para o nosso componente, que servirá para armazenar a chave utilizada na criptografia dos dados.À Seção Private da interface da Unit Criptografia acrescente a linha:


VChave: Word;

À Seção Published acrescente a linha:


Property Chave:Word read vChave write vChave;

A seção public da interface da Unit Criptografia, acrescente a declaração do construtor do componente:


Constructor Create(AOWner:Tcomponent);override;

A parte implementation acrescente a implementação do construtor:


Construtor Tcriptografia.Create(AOWner: TComponent);
Begin
Inherited Create(AOWner); //Chama o construtor priginal
Chave:=16854;
End;

A seção Public acrescente as declarações dos métodos de criptografia:


Function Criptografar(pTexto:String):String;
Function Descriptografar(pTexto:String):String;

A parte implementation acrescente a implementação dos métodos de criptografia:


Function Tcriptografia.Criptografar(pTexto:String):String;

Var I:Byte; 
VChave:Word;
Texto:String;

Begin

VChave:=Chave;

For I:=1 to to Length(pTexto) do

Begin

Texto:=Texto+char(Byte(pTexto[I]) xor (vChave shr 8));

VChave:=(Byte(Texto[I]) + vChave) * C1 + C2;

End;

Result:=Texto;

End;

//Cria comandos pra Descriptografar os caracteres


Function Tcriptografia.Descriptografar(pTexto:String):String;

Var I:Byte; 
VChave:Word;
Texto:String;

Begin

VChave:=Chave;

For I:=1 to to Length(pTexto) do

Begin 

Texto:=Texto+char(Byte(pTexto[I]) xor (vChave shr 8));

VChave:=(Byte(Texto[I]) + vChave) * C1 + C2;

End;

Result:=Texto;

End;