在MSSQL中搜索HashByte列

时间:2015-04-28 23:30:53

标签: php sql sql-server

我试图搜索包含用户数据的MSSQL表。我最感兴趣的两列是用户名和密码。密码列是二进制(20)数据类型,包含由

生成的数据
   HashBytes('SHA1','Password')

这是我正在制作的电话,没有成功。我错过了什么?

$select_user=sqlsrv_prepare($connection,"
    SELECT
         id, username
    FROM
         dbo.users
    WHERE
         username=? AND password=HashBytes('SHA1',?)",
    array(&$username, &$password));

1 个答案:

答案 0 :(得分:0)

您的帖子中没有任何内容表明您正在做任何会阻止您的查询工作的内容。

CREATE TABLE T (
  usr VARCHAR(100),
  pwd BINARY(20)
  );

INSERT INTO T
   (usr, pwd)
  VALUES
   ('john', HashBytes('SHA1', 'john-pwd'))

INSERT INTO T
   (usr, pwd)
  VALUES
   ('jane', HashBytes('SHA1', 'jane-pwd'))

这是一个示例查询:

DECLARE @pwd AS VARCHAR(100)
DECLARE @usr AS VARCHAR(100)

SET @usr = 'john'
SET @pwd = 'john-pwd'

-- search for john's record by username & password
SELECT *
  FROM T
 WHERE usr = @usr
   AND pwd = HashBytes('SHA1', @pwd)

这是一个SQL Fiddle链接,显示了一个工作示例:http://sqlfiddle.com/#!6/45766/2/0

usr   | pwd
------+----------------------------------------
john  | kwRrA4hNLaWscG4RJMRy/9k43sM=

您可以缓存查询的哈希密码,但除此之外,查询应该可以正常工作。