Criptografia com MD5 no DotNet - Parte 2
Olá pessoal, hoje mostraremos como implementar a verificação de um valor criptografado com algoritmo MD5 em uma aplicação C# com windowsForms.
Olá pessoal, vimos no último artigo, que a framework .Net possui classes que facilitam nossa vida quando o assunto é criptografia. Vimos como implementar como criptografar um valor usando o algoritmo MD5. Como todos já devem saber, não existe algoritmo para descriptografar o MD5, ou seja, não tem como revertermos uma criptografia realizada.
Se não é possível descriptografar um hash MD5, como podemos então verificar se uma senha é válida por exemplo. Simples. Nós temos que criptografar o valor a ser verificado e comparar com o MD5 armazenado.
Para este nosso exemplo, vamos usar a aplicação do último artigo. Apenas adicione mais um TextBox e renomeie o mesmo para TxtVerificaValor. Adicione também um novo botão. A idéia neste exemplo é digitar um valor em TxtValor, clicar no botão para criptografar, assim o valor de TxtValorCriptografado será preenchido. Depois vamos digitar um valor qualquer em txtVerificaValor e clicaremos no botão verificar, que irá comparar o hash gerado com o hash do valor a ser verificado.
Crie o método abaixo que será responsável por verificar o valor passado se coincide com o Hash me questão.
// Verifica se o valor é compativel com o hash passado
public bool verifyMd5Hash(string valor, string
valorCriptografado)
{
// Criptografamos
o valor passado como parâmetro
// utilizando o
mesmo método citado no artigo anterior
string
NovoValorCriptografado = GerarMD5(valor);
// Criamos uma
StringComparer para compararmos os dois hashs gerados
StringComparer
comparer = StringComparer.OrdinalIgnoreCase;
//Se os valores
forem iguais, retorna true, ou seja, o valor
// passado
corresponde ao Hash
if
(comparer.Compare(NovoValorCriptografado, valorCriptografado) == 0) {
return true;
}
else
{
return false;
}
}
Este método receberá dois valores, um valor natural e um criptografado, e então retornará se os mesmos coincidem ou não.
No evento OnClick do botão verificar, adicione o seguinte código:
if
(verifyMd5Hash(TxtVerificaValor.Text, txtValorCriptografado.Text))
{
MessageBox.Show("Valor compatível");
}
else {
MessageBox.Show("Valor incompatível");
}
Vamos ficando por aqui, espero que tenham gostado e que as informações passadas sejam úteis no seu dia-a-dia.
Um grande abraço.
Ricardo Coelho.