Ejemplo .NET: Generar una contraseña en hash SHA1

 

logo_NET_390x250

Ejemplo de código fuente que consiste en un método de C# y de Visual Basic.NET muy usado, para generar una contraseña con un hash SHA1 que podremos usar después para determinadas comprobaciones de veracidad de esa contraseña, o para guardarlas en una base de datos.

 

 

Descripción del ejemplo

Lo que hago es, que mediante una cajita de texto donde yo meto mi password, al hacer clic en el botón de hash SHA-1, convierto esa cadena introducida en su correspondiente hash y la muestro en la otra textbox.

 

Por supuesto importantísimo meterle al código estas librerías para C#:

using System.Text;
using System.Security.Cryptography;

Y así para VB.Net:


Imports System.Text
Imports System.Security.Cryptography

 

Código para C#

        //Método para generar una clave con un hash SHA-1, a partir de una cadena dada

        private string generarClaveSHA1(string cadena)
        {

            UTF8Encoding enc = new UTF8Encoding();
            byte[] data = enc.GetBytes(cadena);
            byte[] result;

            SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();

            result = sha.ComputeHash(data);


            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < result.Length; i++)
            {

                // Convertimos los valores en hexadecimal
                // cuando tiene una cifra hay que rellenarlo con cero
                // para que siempre ocupen dos dígitos.
                if (result[i] < 16)
                {
                    sb.Append("0");
                }
                sb.Append(result[i].ToString("x"));
            }

            //Devolvemos la cadena con el hash en mayúsculas para que quede más chuli 🙂
            return sb.ToString().ToUpper();
        }

 

Código para VB.NET

    ' Método para generar una clave con un hash SHA-1, a partir de una cadena dada

    Function generarClaveSHA1(ByVal cadena As String) As String

        Dim enc As New UTF8Encoding
        Dim data() As Byte = enc.GetBytes(cadena)
        Dim result() As Byte

        Dim sha As New SHA1CryptoServiceProvider

        result = sha.ComputeHash(data)

        Dim sb As New StringBuilder
        Dim max As Int32 = result.Length



        For i As Integer = 0 To max - 1


            'Convertimos los valores en hexadecimal
            'cuando tiene una cifra hay que rellenarlo con cero
            'para que siempre ocupen dos dígitos.
            If (result(i) < 16) Then
                sb.Append("0")
            End If

            sb.Append(result(i).ToString("x"))


        Next


        'Devolvemos la cadena con el hash en mayúsculas para que quede más chuli 🙂
        generarClaveSHA1 = sb.ToString().ToUpper()


    End Function

 

Previsualización del ejemplo

SHA_img

 

Descargar ejemplo

Proyectos completos en C# y en VB.NET. Los proyectos han sido creados mediante Visual Studio 2012 para framework 4.5