Usuário com melhor resposta
Como gerar o MD5 de um arquivo?

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!
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
- Editado Thiago Derissi Poderoso terça-feira, 18 de junho de 2013 12:18 Correção
- Marcado como Resposta Thiago Derissi Poderoso terça-feira, 18 de junho de 2013 12:18
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!
-
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
- Editado Thiago Derissi Poderoso terça-feira, 18 de junho de 2013 12:18 Correção
- Marcado como Resposta Thiago Derissi Poderoso terça-feira, 18 de junho de 2013 12:18