vb.net,如何验证SHA1哈希密码?

用户2018388

我继承了一个我需要支持的程序,并被告知密码是使用SHA1哈希存储在MSSQL数据库中的。当我尝试从数据库中读取数据时,我得到的只是“ System.Byte []”。

该程序要求用户输入密码,并且我可以使用以下命令创建SHA1哈希:

Public Function GetSHA1HashData(data As String) As String

        Dim cBase64 As String
        Dim objSHA1 As New SHA1CryptoServiceProvider()
        Dim abBytesToHash() As Byte
        Dim cHash As String

        cBase64 = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(data))
        abBytesToHash = System.Text.Encoding.ASCII.GetBytes(cBase64)
        cHash = BitConverter.ToString(objSHA1.ComputeHash(abBytesToHash))
        cHash = Replace(cHash, "-", "")

        Return cHash

End Function

所以我的问题是,如何将新创建的哈希值与要从数据库中拉出的值进行比较,以查看它们是否相同?我需要对“ System.Byte []”进行些什么才能使其变为我可以阅读的内容?

谢谢。

马丁·波德维斯(Maarten Bodewes)

您可以使用您的函数创建SHA-1哈希,但是用值填充数据库的人员是否确实使用了相同的函数,这是一个问题。当前,您正在使用base 64对数据(已经是字符串)进行编码,仅用于检索字符编码。这个人很可能直接获得了字符编码-我这里UTF-8-并计算了SHA-1值。

Public Function GetSHA1HashData(data As String) As Byte()
    Dim objSHA1 As New SHA1CryptoServiceProvider()
    return objSHA1.ComputeHash(System.Text.Encoding.UTF8.GetBytes(data));
End Function

好的,所以现在您将从数据库中获得一个字节数组,并从用户密码中计算出一个字节数组。您可以直接比较这些字节数组。幸运的是,您可以依靠StackOverflow和Jon Skeet获得有关如何执行此操作的答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章