.net 没有文件属性的文件的md5哈希
使用以下代码计算文件的MD5哈希:.net 没有文件属性的文件的md5哈希,.net,sql-server-2005,hash,md5,.net,Sql Server 2005,Hash,Md5,使用以下代码计算文件的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.Cryptograp
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数据库中。当我们上传一个文件的同一个实例时,这可以很好地工作。但是,当我们在文件系统上从数据库保存文件的新实例(今天的日期为create/modify)时,然后检查新哈希与数据库中存储的MD5是否匹配,因此重复检查失败
我们如何检查不包括文件属性的文件哈希?或者这里有不同的问题吗?我怀疑
Me.\u BinaryData
不仅仅是用文件的内容初始化的
最终,散列可以更改的唯一方式是字节数组是否更改
另一种可能是,当您从数据库中持久化/还原文件时,字符集/编码存在差异。我怀疑
Me.\u BinaryData
不仅仅使用文件的内容进行初始化
最终,散列可以更改的唯一方式是字节数组是否更改
另一种可能是,当您从数据库中持久化/恢复文件时,字符集/编码存在差异。答案是数组声明的ol'VB问题。大小是上限,而不是长度
Dim _BinaryData As Byte() = New Byte(FileUpload1.PostedFile.InputStream.Length) {}
应该是:
Dim _BinaryData As Byte() = New Byte(FileUpload1.PostedFile.InputStream.Length - 1 ) {}
每个文件的末尾都有一个额外的空字节。答案是ol'VB数组声明问题。大小是上限,而不是长度
Dim _BinaryData As Byte() = New Byte(FileUpload1.PostedFile.InputStream.Length) {}
应该是:
Dim _BinaryData As Byte() = New Byte(FileUpload1.PostedFile.InputStream.Length - 1 ) {}
每个文件的末尾都有一个额外的空字节。可能文档正在内部存储修改日期-它是什么类型的文件?我在哪里。\u二进制数据正在初始化?设置为什么?它们是.docx、.pdf、.ppt类型的文件。没什么特别的。上面更新了文件的字节()可能文档在内部存储修改日期-它是什么类型的文件?我在哪里。\u二进制数据正在初始化?设置为什么?它们是.docx、.pdf、.ppt类型的文件。没什么特别的。上面更新了以包含文件的字节()