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.