2

我很难找到 vb (不是 C)的函数或子函数,它提供了一种将给定字符串转换为 sha-1(或理想情况下为 sha512)哈希的简单方法。

如果有人可以在 VB 中提供一个函数,那将非常有帮助。

最近的尝试:

Function create_hash(ByVal password, ByVal salt)

        Dim input As [Char]() = "string to hash".ToCharArray()
        Dim secret As New SecureString()


        For idx As Integer = 0 To input.Length - 1
            secret.AppendChar(input(idx))
        Next SecurePassword.MakeReadOnly()

        Dim pBStr As IntPtr = Marshal.SecureStringToBSTR(secret)
        Dim output As String = Marshal.PtrToStringBSTR(pBStr)
        Marshal.FreeBSTR(pBStr)
        Dim sha As SHA512 = New SHA512Managed()
        Dim result As Byte() = sha.ComputeHash(Encoding.UTF8.GetBytes(output))



        Return result
    End Function

但这会导致 Visual stuido 在每次使用时都会在 SecurePassword 和 Marshal 下划线。这些被标记为未声明的变量,但声明它们会导致我找不到解决方法的其他问题。

4

1 回答 1

2

查看System.Security.Cryptography.SHA512 类的文档

Dim data(DATA_SIZE) As Byte
Dim result() As Byte
Dim shaM As New SHA512Managed()
result = shaM.ComputeHash(data)

像这样(忽略你在顶部做的腌制):

Function create_hash(ByVal password, ByVal salt) As Byte()
    Dim sha As SHA512 = New SHA512Managed()
    Dim result As Byte() = sha.ComputeHash(Encoding.UTF8.GetBytes(password & salt))
    Return result
End Function
于 2011-06-20T14:17:44.887 回答