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.