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 String) As 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 String) As 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 |
6 Responsesso far
Este es el primer artículo breve de otros muchos que deseo escribir en mi blog, acerca de pequeñas
buen code snippet !!!
anotado para cuando sea necesario 😀
Gracias
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.
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. 🙂
Leider muss ich sagen, dass alles was ich gelesen habe ist reine Scheisse
Hola, este código funciona el VB6? Respondeme porfavor (jokingam @ gmail . com) une los espacios