sábado, 27 de fevereiro de 2010

Dica Delphi - MD5 com Delphi usando Indy

Salve, salve

Esta dica apresenta a função (ou método) para exemplificar como implementar a criptografia utilizando MD5, com Delphi e Indy

Inclua na seção uses a unit IdHashMessageDigest.

Primeiramente, façamos as seguintes implementações das funções que chamarão os métodos implementados na unit IdHashMessageDigest::

//Criptografar uma String
function MD5(const texto: string): string;
var
idmd5: TIdHashMessageDigest5;
begin
idmd5 := TIdHashMessageDigest5.Create;
try
result := idmd5.HashStringAsHex(texto);
finally
idmd5.Free;
end;
end;

//Criptografar um arquivo inteiro
function MD5File(const fileName: string): string;
var
idmd5 : TIdHashMessageDigest5;
fs : TFileStream;
begin
idmd5 := TIdHashMessageDigest5.Create;
fs := TFileStream.Create(fileName, fmOpenRead OR fmShareDenyWrite) ;
try
result := idmd5.HashStreamAsHex(fs);
finally
fs.Free;
idmd5.Free;
end;
end;

Agora, para criptografar uma String, faça:

ShowMessage( MD5('teste') ); //MD5(edtSenha.Text);

E para obter o hash MD5 de um arquivo, basta chamar a respectiva função passando o caminho completo do arquivo que queremos criptografar, ex:

ShowMessage( MD5File('C:\arquivo.xml') );

----
Dica tirada da internet
----
Take care

17 comentários:

Anônimo disse...

show!!! parabéns!!!

Possidônio Oliveira disse...
Este comentário foi removido pelo autor.
Possidônio Oliveira disse...

Esta dica me auxiliou bastante. Muito simples de implementar. Parabéns.

Anônimo disse...

Como poderia ser a função para desencripitar o MD5???

Anônimo disse...

Este hash não é correto, não fecha com o hash calculado do mesmo conteúdo por outros programas e rotinas. Aliás, Delphi é uma bosta.

Anônimo disse...

//Criptografar uma String com MD5
function TForm1.MD5(const Texto: string): string;
begin
// IMPORTANTE:
// antes de jogar o parâmetro Texto
// numa Query, faça a devida
// segurança para evitar possíveis
// ataques SQL ao seu Banco de Dados

with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add(concat('SELECT MD5(',#39,Texto,#39,') as Rst'));
try
Open;
except
Result:= '';
end;
Result:= FieldByName('Rst').AsString;
end;

end;

Anônimo disse...

Muito bom... código perfeito... Verdadeiro MD5!!!!

Anônimo disse...

Anônimo, ao invés de você ficar criticando, porque não dispobiliza um código ou rotina que gere um hash verdadeiro e que seja desenvilvido em algo que não seja uma bosta?

Anônimo disse...

E porque você que falou que é uma bosta, não cria vergonha na cara e desenvolve um? Se realmente acha uma bosta faça algo melhor? Tanto o Delphi quando o hash, idiota.
É porque isso que existem sistemas mediocres por ai, desenvolvidos por programadores idiota e ignorantes iguais a você, se é que você pode ser chamado de programador.

Anônimo disse...

Para realizar o inverso, tem como?
Pegar o conteúdo gerado pela função, e fazer a reversão?

Unknown disse...

cara eu tentei mas deu problema no result := idmd5.HashStringAsHex(texto);

Unknown disse...

Bosta é tu, safado.

Anônimo disse...

O cara vem aqui só pra falar que Delphi é uma bosta kkk
Eu não uso mais Delphi pra trabalho, mas analisem só: O Delphi existe desde o Windows 3.1 se não me engano, e ele evoluiu junto com a computação e se mantém forte no mercado até hoje. Inclusive da pra desenvolver Android e IOs com ele, ou seja, se manteve atualizado com as novas tecnologias. Eu programo desde 1994 e a única certeza que a gente sempre teve era que o Delphi ia estar por aí mandando no desenvolvimento para desktops. Claro que toda ferramenta tem um objetivo específico, não se cria sites com Delphi por exemplo, mas para o cara afirmar que Delphi é uma bosta, com certeza não sabe nada. Deve ser um gurizão desses fazedores de CRUD que só sabe usar Wordpress.

Quanto ao post está de parabéns, me ajudou muito, não lembrava mais como fazia MD5 no Delphi.

Abraço e sucesso!

Anônimo disse...

é uma bosta mesmo rapaz !!!

Anônimo disse...

é um penico cheio!!!!!

Anônimo disse...

delphi é um lixo. nem descriptografar essa lib consegue. lixo demais.

Anônimo disse...

Delphi Top de linha quem fala pq nao sabe programar bosta é quem fala porque nao entende!!!