When a user clicks on the button, it will ask him to choose a specific file. It checks the MD5 hash to know if this is the right file.
The problem with the code is that it gives me "Wrong File" message, and I'm totally sure that the MD5 hash for the file is "3982908442F37245B305EDCF4D834494"
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
dim md5code as string
OpenFileDialog1.ShowDialog()
Dim md5 As MD5CryptoServiceProvider = New MD5CryptoServiceProvider
Dim f As FileStream = New FileStream(OpenFileDialog1.FileName, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)
f = New FileStream(OpenFileDialog1.FileName, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)
md5.ComputeHash(f)
Dim ObjFSO As Object = CreateObject("Scripting.FileSystemObject")
Dim objFile = ObjFSO.GetFile(OpenFileDialog1.FileName)
Dim hash As Byte() = md5.Hash
Dim buff As StringBuilder = New StringBuilder
Dim hashByte As Byte
For Each hashByte In hash
buff.Append(String.Format("{0:X1}", hashByte))
Next
md5code = buff.ToString()
If md5code = "3982908442F37245B305EDCF4D834494" Then
TextBox2.Text = OpenFileDialog1.FileName
Else
MessageBox.Show("Wrong File")
End If
End Sub
Please see the following MS KB articles:
HashAlgorithm.ComputeHash Method (Stream)
How to compute and compare hash values by using Visual Basic .NET or Visual Basic 2005
Basically, you need to change your generation of the MD5 string to that outlined in either of the articles. To quote the second:
You would call this method with md5.Hash as the parameter and store the result in your md5code variable: