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