Criptografar Senhas utilizando MD5 Hash em C# (CSharp)

Rotina para criptografar Senhas utilizando método criptografia MD5 Hash em C# (CSharp).


Autor : Antonio Carlos Ferreira de Azevedo
Postado em : 17/11/2015

Classe para criptografar senhas utilizando método MD5 Hash do C#

Crie uma arquivo com o nome Md5Hash.cs em seu projeto e cole o código abaixo

/* 
 * Criptografia de senha em MD5 Hash.
 *
 * Visite nossa página http://www.codigoexpresso.com.br
 * 
 * public static string CalculaHash(string Senha)
 *        criptografa uma senha em MD5 Hash
 *
 */
using System;

public static class MD5Hash
{
    /// <summary>
    /// Calcula MD% Hash de uma determinada string passada como parametro
    /// </summary>
    /// <param name="Senha">String contendo a senha que deve ser criptografada para MD5 Hash</param>
    /// <returns>string com 32 caracteres com a senha criptografada</returns>
    public static string CalculaHash(string Senha)
    {
        try
        {
            System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
            byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(Senha);
            byte[] hash = md5.ComputeHash(inputBytes);
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            for (int i = 0; i < hash.Length; i++)
            {
                sb.Append(hash[i].ToString("X2"));
            }
            return sb.ToString(); // Retorna senha criptografada 
        }
        catch (Exception)
        {
            return null; // Caso encontre erro retorna nulo
        }
    }
}

Para fazer a chamada a função que criptografa uma senha utilize o método

string senha = "123456";

// Calcula a senha com base na string senha e armazena na string senhaCriptografada 
// Neste caso senha = '123456' retorna string 'E10ADC3949BA59ABBE56E057F20F883E'
string senhaCriptografada = MD5Hash.CalculaHash(senha);     ]

Observações

Depois de criptografada é impossível chegar ao valor original novamente, sendo assim, salvamos a senha criptografada em nosso banco de dados e para confirmar se o usuário digitou a senha corretamente devemos criptografar a senha informada para então comparar com a senha armazenada.

Deve-se criar método para que quando o usuário esquecer sua senha possamos gravar uma senha genérica exemplo 123456 e garantir que o usuário troque sua senha assim que fizer um novo acesso.


Caso tenha alguma dúvida deixe seu comentário abaixo.




Comentários