VB.NET – Obtener el hash MD5 de un texto o de un archivo

En criptografía, el MD5 (Message Digest 5) es un algoritmo de reducción de 128 bits diseñado por Ronald Rivest del MIT en 1991 que se emplea principalmente para autentificar mensajes y verificar su contenido, verificar firmas digitales y comprobar si un archivo se ha modificado.

El algoritmo MD5 analiza archivos y mensajes para generar una firma que pueda compararse con la del archivo o mensaje original. Así se puede verificar fácilmente que la información correcta llegue a su destino.

Un hash MD5 de 128 bits se representa como un número de 32 símbolos hexadecimales que cambia radicalmente si un solo carácter de entrada es modificado. Veamos un ejemplo y comparemos el resultado final:

Dim hashMD5 as String = GetMD5Hash("Hola Mundo") 'Resultado: 9dh9f63913ebfg528667b629021990e
Dim hashMD5 as String = GetMD5Hash("Hola Mundo!") 'Resultado: 2gf4d75a43hh32bb3254hgf3f582efb

Cómo podemos observar, el simple hecho de agregar un carácter (!) nos modifica completamente el resultado final.

 

MD5 de un string

Para obtener el hash MD5 de una cadena de texto, usaremos la siguiente función:

Public Shared Function GetMD5Hash(strToHash As String) As String
        Try
            Dim md5Obj As New System.Security.Cryptography.MD5CryptoServiceProvider
            Dim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(strToHash)
            bytesToHash = md5Obj.ComputeHash(bytesToHash)
            Dim strResult As New StringBuilder
            For Each b As Byte In bytesToHash
                strResult.Append(b.ToString("x2"))
            Next
            Return strResult.ToString.ToUpper
        Catch ex As Exception
            Return "MD5HashError"
        End Try
End Function

Para llamar a esta función, le pasaremos la cadena de texto que queremos analizar de esta forma, al igual que el ejemplo anterior:

Dim hashMD5 as String = GetMD5Hash("Hola Mundo") 'Resultado: 9dh9f63913ebfg528667b629021990e8

 

MD5 de un archivo

Para obtener el hash MD5 de un archivo usaremos la siguiente función:

Public Shared Function GetFileMD5(ByVal filename As String) As String
        Try
            Using md5 As MD5 = MD5.Create()
                Using stream = File.OpenRead(filename)
                    Return BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", String.Empty)
                End Using
            End Using
        Catch ex As Exception
            Return "00000000000000"
        End Try
End Function

Para llamar a esta función, le pasaremos la ruta del archivo que queremos analizar de esta forma:

Dim hashMD5 as String = GetFileMD5("c:\file.txt")

Espero que os resulte útil, si es así, deja un comentario más abajo para hacérmelo saber.

Deja un comentario