Использование следующего кода для вычисления хэшей файлов MD5:
Private _MD5Hash As String
Dim _BinaryData As Byte() = New Byte(FileUpload1.PostedFile.InputStream.Length) {}
FileUpload1.PostedFile.InputStream.Read(_BinaryData, 0, _BinaryData.Length)
Dim md5 As New System.Security.Cryptography.MD5CryptoServiceProvider
Dim md5hash() As Byte
md5hash = md5.ComputeHash(Me._BinaryData)
Me._MD5Hash = ByteArrayToString(md5hash)
Private Function ByteArrayToString(ByVal arrInput() As Byte) As String
Dim sb As New System.Text.StringBuilder(arrInput.Length * 2)
For i As Integer = 0 To arrInput.Length - 1
sb.Append(arrInput(i).ToString("X2"))
Next
Return sb.ToString().ToLower
End Function
Мы получаем разные хэши в зависимости от даты создания и даты изменения файла. Мы храним хеш и двоичный файл в базе данных SQL. Это прекрасно работает, когда мы загружаем один и тот же экземпляр файла. Но когда мы сохраняем новый экземпляр файла из БД (с сегодняшней датой как создание / изменение) в файловой системе, а затем проверяем новый хеш по сравнению с MD5, сохраненным в БД, они не совпадают, и поэтому дубликат чека.
Как мы можем проверить хеш файла, исключая атрибуты файла? или здесь другая проблема?