我很难用这个。有人可以为我指出正确的方向来检查/构建上传文件的哈希码,或者告诉我下面的代码有什么问题吗?
getFileSHA256(softwareUpload.PostedFile) 'Line that calls the function includes a reference to an uploaded file
Private Function getFileSHA256(ByVal theFile As Web.HttpPostedFile) As String
Dim SHA256CSP As New SHA256Managed()
Dim byteHash() As Byte = SHA256CSP.ComputeHash(theFile.InputStream)
Return ByteArrayToString(byteHash)
End Function
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
我应该补充一点,该函数有效,但返回与其他程序的 sha256 值不匹配。
编辑------
我在我的代码中使用了另外两个函数。SHA1 得到与 SHA256 相同的结果;结果与可信来源不匹配。
但是,MD5 按预期工作。
Private Function getFileSHA1(ByVal theFile As Web.HttpPostedFile) As String
Dim SHA1CSP As New SHA1CryptoServiceProvider()
Dim byteHash() As Byte = SHA1CSP.ComputeHash(theFile.InputStream)
Return ByteArrayToString(byteHash)
End Function
Private Function getFileMd5(ByVal theFile As Web.HttpPostedFile) As String
Dim Md5CSP As New System.Security.Cryptography.MD5CryptoServiceProvider
Dim byteHash() As Byte = Md5CSP.ComputeHash(theFile.InputStream)
Return ByteArrayToString(byteHash)
End Function
一旦我知道它们按预期工作,我计划整合这些功能。
它们之间的唯一区别是 MD5 使用“MD5CryptoServiceProvider”并且它按预期工作。SHA1 也在使用“SHA1CryptoServiceProvider”,但它与受信任的来源不匹配。