Visual Basic 2005 :: Obtener el código MD5 de un fichero - Jorge Serrano - MVP Visual Developer - Visual Basic

Visual Basic 2005 :: Obtener el código MD5 de un fichero

 Artículo :: Programación :: Visual Basic 2005

Obtener el código MD5 de un fichero

En este pequeño artículo, vamos a hacer una pequeña utilidad o programa, que nos permita obtener el código MD5 de un fichero dado.

El código MD5 nos servirá para generar una firma (como la firma CRC32 por ejemplo) para verificar que un determinado fichero enviado por un emisor, llega correctamente al receptor.

Esto lo lograremos mediante el uso del nombre de espacio System.IO y System.Security.Cryptography.

El código para realizar esta acción, prácticamente no requiere explicación y es el que se indica a continuación:

Imports System.IO
Imports System.Security.Cryptography

Public Class Form1

    
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        MessageBox.Show(ObtenerMD5(
"c:\fichero.zip"))
    
End Sub

    Private Function ObtenerMD5(ByVal fichero As StringAs String
        Dim cadenaMD5 As String = ""
        Dim cadenaFichero As FileStream
        
Dim bytesFichero As [Byte]()
        
Dim MD5Crypto As New MD5CryptoServiceProvider
        cadenaFichero = File.Open(fichero, FileMode.Open, FileAccess.Read)
        bytesFichero = MD5Crypto.ComputeHash(cadenaFichero)
        cadenaFichero.Close()
        
For Each datos As Byte In bytesFichero
            
If datos < 16 Then
                cadenaMD5 &= "0" & datos.ToString("X")
            
Else
                cadenaMD5 &= datos.ToString("X")
            
End If
        Next
        Return cadenaMD5
    
End Function

End
 Class

Añadido del día 22 de Agosto (otra forma de hacer lo mismo pero más directo):

Imports System.IO
Imports System.Security.Cryptography

Public Class Form1

    
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        MessageBox.Show(ObtenerMD5(
"c:\Fichero.zip"))
    
End Sub

    Private Function ObtenerMD5(ByVal fichero As StringAs String
        Dim cadenaMD5 As String = ""
        Dim cadenaFichero As FileStream
        
Dim bytesFichero As [Byte]()
        
Dim MD5Crypto As New MD5CryptoServiceProvider
        cadenaFichero = File.Open(fichero, FileMode.Open, FileAccess.Read)
        bytesFichero = MD5Crypto.ComputeHash(cadenaFichero)
        cadenaFichero.Close()
        cadenaMD5 = BitConverter.ToString(bytesFichero)
        cadenaMD5 = cadenaMD5.Replace(
"-""")
        
Return cadenaMD5
    
End Function

End
 Class

Published 19/8/2006 17:03 por Jorge Serrano
Comparte este post:

Comentarios

Saturday, August 19, 2006 7:40 PM por Jorge Serrano - MVP Visual Developer - Visual Basic

# Nuevo art&#237;culo :: C&#243;mo obtener el c&#243;digo MD5 de un fichero en VB 2005

Este es el primer artículo breve de otros muchos que deseo escribir en mi blog, acerca de pequeñas
Saturday, August 19, 2006 8:13 PM por El Bruno

# re: Visual Basic 2005 :: Obtener el código MD5 de un fichero

buen code snippet !!!

anotado para cuando sea necesario :D

Gracias

Monday, August 21, 2006 10:40 PM por Luis Ruiz

# re: Visual Basic 2005 :: Obtener el código MD5 de un fichero

Buenas Jorge:

Una preguntilla, puedes aclarar esta porción de código:

If datos < 16 Then

  cadenaMD5 &= "0" & datos.ToString("X")

Else

  cadenaMD5 &= datos.ToString("X")

End If

Salu2 y gracias de antemano.

Tuesday, August 22, 2006 12:19 AM por Jorge Serrano

# re: Visual Basic 2005 :: Obtener el código MD5 de un fichero

Hola Luis.

Esa línea de código, lo que hace es verificar que el valor a tratar es menor que 16.

15 = 00001111 = 0F

16 = 00010000 = 10

Bien, para visto así, para añadir un 0 delante, miramos si ese valor es menor que 16. En ese caso, extraemos el valor y le ponemos delante un 0.

Pero todo este código puede simplificarse aún más y eso es lo que incluyo ahora como añadido.

No es que esté mal el código que he puesto, pero creo que es más directo darle una vuelta más, así que sirvan los dos ejemplos como solución.

Espero que ahora esté más claro. :-)

Wednesday, May 05, 2010 4:39 PM por Felipe

# re: Visual Basic 2005 :: Obtener el código MD5 de un fichero

Leider muss ich sagen, dass alles was ich gelesen habe ist reine ***

Wednesday, January 05, 2011 12:07 PM por dark_on_5

# re: Visual Basic 2005 :: Obtener el código MD5 de un fichero

Hola, este código funciona el VB6? Respondeme porfavor (jokingam @ gmail . com) une los espacios