本文介绍了SQL HASHBYTES返回不同的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的应用程序中,HASHBYTES SQL函数为同一个字符串返回不同的值。

以下是我的用户创建代码。

In my Application, the HASHBYTES SQL function returns different values for same string.
Below is my user creation code.

Guid fillerG = Guid.NewGuid();
using (SqlCommand com = new SqlCommand("INSERT INTO App_Users (UserName, PasswordHash, PasswordSalt) VALUES ('" + userNameTxt.Text + "', HASHBYTES ( 'SHA1', CONVERT(NVARCHAR(100), '" + userPassword.Text + fillerG.ToString() + "') ),  '" + fillerG.ToString() + "'; ", con))
{
    com.ExecuteNonQuery();
}



如果我在登录页面中比较上面插入的行,则不匹配。

这是我的比较脚本。


If I compare the above inserted row in my Login Page, It doesn't match.
This is my comparing script.

SqlCommand loginCom = new SqlCommand("select COUNT(UserID) FROM App_Users WHERE UserName = '" + Login1.UserName.Replace("'", "''") + "' AND PasswordHash = HASHBYTES('SHA1', '" + Login1.Password.Replace("'", "''") + "' + CONVERT(NVARCHAR(36), PasswordSalt))", loginCon);





第一个代码将passwordHash存储为:



The first code stores the passwordHash as this:

0xDAC9280F85B40C06314228876717E342432807DB



但是在查询窗口中,具有相同值的HASHBYTES函数返回:


But in the query window, the HASHBYTES function with same value returns this:

0xA561FBD35713F922AD761594658C193F12B82791

推荐答案



这篇关于SQL HASHBYTES返回不同的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-11 15:39