gpt4 book ai didi

vb.net - 构建/检查文件的哈希值

转载 作者:行者123 更新时间:2023-12-02 04:36:53 25 4
gpt4 key购买 nike

我在这个问题上遇到了困难。有人可以指出我检查/构建上传文件的哈希代码的正确方向,或者告诉我下面的代码做错了什么吗?

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”,但它与可信来源不匹配。

最佳答案

我在这里做了一些测试,看来对于文本文件 SHA256Managed 工作完美

我的代码如下,我使用了您的 ByteArrayToString 实现:

Sub Main()
Dim s As New SHA256Managed
Dim fileBytes() As Byte = IO.File.ReadAllBytes("s:\sha256.txt")
Dim hash() As Byte = s.ComputeHash(fileBytes)

Dim referenceHash As String = "18ffd9682c5535a2b2798ca51b13e9490df326f185a83fe6e059f8ff47d92105"
Dim calculatedHash As String = ByteArrayToString(hash)
MsgBox(calculatedHash = referenceHash) 'outputs True
End Sub

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

出于测试目的,我在 S: 下创建了一个名为 sha256.txt 的文件,其中包含以下内容:

my test file

(无尾随空格或换行符)

我得到了引用哈希值from here ,通过提供相同的数据。

另请检查thisthis - 您获得不匹配的事实可能与您的可信来源的平台和/或实现有关,或者需要额外的转换步骤。

关于vb.net - 构建/检查文件的哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14717667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com