PDA

View Full Version : حرفه ای: بررسی صحت یک فایل با MD5



ali reza mansoori 2
سه شنبه 24 اردیبهشت 1392, 16:58 عصر
سلام دوستان
میخوام یک فایل رو به روش MD5 بررسی کنم
کسی نمونه کد برای این کار داره

h_a_m_i_d
سه شنبه 24 اردیبهشت 1392, 18:14 عصر
http://stackoverflow.com/questions/12613645/vb-net-generating-an-md5-hash-from-a-string-for-passwords-to-save-in-sql

alimanam
چهارشنبه 25 اردیبهشت 1392, 11:20 صبح
با سلام

لینک داده شده در پست شماره 2 ممکنه مقدار هش یک رشته رو به شما بده در صورتی که از عنوان تاپیک مشخصه که منظور صحت و اعتبار سنجی 2تا فایل هست که آیا یکی هستن یا نه . برای این منظور کدی که در زیر مثال زدم رو میتونین استفاده کنین .


Imports System.Security.Cryptography
Imports System.IO
Imports System.Text

Public Class Form1

Private Function MD5_FileHashCode(ByVal fPath As String) As String

Try
Dim md5 As MD5CryptoServiceProvider = New MD5CryptoServiceProvider
Dim f As FileStream = New FileStream(fPath, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)

md5.ComputeHash(f)

Dim hash As Byte() = md5.Hash
Dim buff As New StringBuilder
Dim hashByte As Byte

For Each hashByte In hash
buff.Append(String.Format("{0:X2}", hashByte))
Next
Return buff.ToString()

Catch ex As Exception
Throw New Exception(ex.Message)
Return Nothing
End Try

End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim ofd1, ofd2 As New OpenFileDialog
If ofd1.ShowDialog = Windows.Forms.DialogResult.OK Then
If ofd2.ShowDialog = Windows.Forms.DialogResult.OK Then
If MD5_FileHashCode(ofd1.FileName) = MD5_FileHashCode(ofd2.FileName) Then
MsgBox("فایل ها یکسان هستند")
Else
MsgBox("فایل ها غیر یکسان هستند")
End If
End If
End If

End Sub

End Class


موفق باشید./

فرید نجفلو
چهارشنبه 25 اردیبهشت 1392, 13:09 عصر
سلام
می تونید از این روش استفاده کنید:



Private Sub CompareFile()
If GetFileMD5("File1_Path") = GetFileMD5("File2_Path") Then
MsgBox("فایل ها یکسان هستند")
Else
MsgBox("فایل ها یکسان نیستند")
End If
End Sub

Private Function GetFileMD5(FilePath As String) As String
Try
Using Strm As New IO.FileStream(FilePath, IO.FileMode.Open)
Using MD5 = Security.Cryptography.MD5.Create()
Return BitConverter.ToString(MD5.ComputeHash(Strm))
End Using
End Using
Catch
Return ""
End Try
End Function



نکته:وقتی دارید با فایل ها کار می کنید هیچ وقت Using ها رو فراموش نکنید!
تابع بالا یعنی GetFileMD5 کاربرد های دیگه هم می تونه داشته باشه مثلا برای فایل هایی که آدرسشون تو دیتابیس ذخیره میشه و خودشون تو خارج از دیتابیس ، یا رد و بدل کردن فایل تو شبکه جهت اطمینان از ارسال صحیح فایل و ...