none
Como gerar o MD5 de um arquivo? RRS feed

  • Pergunta

  • Olá pessoal!
    Estou tentando fazer uma rotina que retorne o MD5 de um aplicativo que eu passar por parâmetro.
    Até consegui fazer a rotina que me retornou o valor, o problema é que ao compara-lo com um outro aplicativo que gera MD5 percebi que o resultado não foi o mesmo.

    Gostaria de saber onde estou errando, pois a rotina eu montei com base em alguns exemplos que encontrei na internet.

        Function GerarMD5(ByVal Aplicativo As String) As String
            Dim Retorno() As Byte, hashCode() As Byte
            Dim MD5Provider As System.Security.Cryptography.MD5CryptoServiceProvider
            Dim X As Long
            Dim Resultado As String, binaryArchive As String
            Dim readStream As FileStream
    
    
            readStream = New FileStream(Aplicativo, FileMode.Open)
            Dim reader As New BinaryReader(readStream)
            binaryArchive = reader.ReadString()
            reader.Close()
    
            MD5Provider = New System.Security.Cryptography.MD5CryptoServiceProvider()
            hashCode = MD5Provider.ComputeHash(System.Text.Encoding.Default.GetBytes(binaryArchive))
    
    
            Try
                For X = 0 To UBound(hashCode)
                    Resultado = Resultado + hashCode(X).ToString
    
                    X = X + 1
                Next X
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    
    
            Return Resultado
        End Function
    Obrigado desde já pela ajuda!
    domingo, 16 de junho de 2013 14:19

Respostas

  • Pessoal, 

    Ta ai a resposta para o problema:

            Dim data() As Byte = File.ReadAllBytes("E:\Teste.exe")
            Dim MD5Provider As New MD5CryptoServiceProvider
            Dim dataCryp() As Byte
            Dim hash As String
    
            dataCryp = MD5Provider.ComputeHash(data)
            MD5Provider.Clear()
            hash = BitConverter.ToString(dataCryp).Replace("-", String.Empty).ToLower


    terça-feira, 18 de junho de 2013 12:17

Todas as Respostas

  • Pessoal, andei pesquisando aqui e encontrei um artigo no site do macoratti explicando o uso da classe MD5CryptoServiceProvider para arquivos.

    Até consegui reproduzir o exemplo, mas agora o retorno que tenho é: ""?D??M??S????#""
    Alguém sabe o porque disso? Tenho que converter esse valor para alguma coisa?

    Pois quando tento usar o FSUM no mesmo arquivo tenho o seguinte retorno: "c16d6fb4f94d10093655fca679d9d37c"

    Agradeço desde já pela ajuda!

    domingo, 16 de junho de 2013 23:42
  • Pessoal, 

    Ta ai a resposta para o problema:

            Dim data() As Byte = File.ReadAllBytes("E:\Teste.exe")
            Dim MD5Provider As New MD5CryptoServiceProvider
            Dim dataCryp() As Byte
            Dim hash As String
    
            dataCryp = MD5Provider.ComputeHash(data)
            MD5Provider.Clear()
            hash = BitConverter.ToString(dataCryp).Replace("-", String.Empty).ToLower


    terça-feira, 18 de junho de 2013 12:17