Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有任何方法可以将SQL Server的dbo.HashPasswordString()与类似于md5()的PHP一起使用?_Php_Sql Server_Hash - Fatal编程技术网

是否有任何方法可以将SQL Server的dbo.HashPasswordString()与类似于md5()的PHP一起使用?

是否有任何方法可以将SQL Server的dbo.HashPasswordString()与类似于md5()的PHP一起使用?,php,sql-server,hash,Php,Sql Server,Hash,我正在尝试创建一个注册和登录表单。使用SQL Server,我可以这样做: SELECT Account, Password FROM USER WHERE Account = ? and Password = dbo.HashPasswordString(?) 但是,我尝试使用一个PHP函数来处理哈希,而不在查询中使用dbo.HashPasswordString()。SQL Server的HashPasswordString()似乎不是MD5,所以我不能像PHP中的MD5()函数那样做。是否

我正在尝试创建一个注册和登录表单。使用SQL Server,我可以这样做:

SELECT Account, Password
FROM USER
WHERE Account = ? and Password = dbo.HashPasswordString(?)
但是,我尝试使用一个PHP函数来处理哈希,而不在查询中使用
dbo.HashPasswordString()
。SQL Server的
HashPasswordString()
似乎不是MD5,所以我不能像PHP中的
MD5()
函数那样做。是否有类似于SQL Server中的PHP函数,因此我可以在将其插入查询之前在PHP中对其进行哈希运算。

SQL Server使用的函数可以指定为使用MD5,例如,
HASHBYTES('MD5','ABCDE')


注意,您需要非常小心SQL Server中的数据类型-VARCHAR的哈希字节和NVARCHAR的哈希字节将提供不同的结果,例如,

好吧,问题是我的应用程序已经使用了如下格式的密码:
U7796T13422FA0
,这显然不是MD5哈希。它使用标准的dbo.HashPasswordString()。还有什么方法可以实现您在php中所说的吗?我不相信这是SQL Server中的标准函数(试试谷歌搜索)。它可能是一个用户定义的函数或类似的函数?值得检查该算法,因为这样您就需要在PHP中镜像该算法。如果我直接从SQL Server管理工具使用以下内容创建一个新帐户:
INSERT-INTO-table(account,Password)值('TestAccount',dbo.HashPasswordString('MyPassword'))
然后我的应用程序识别该帐户。它工作正常。我只是安装了MSSQL Server 2017,没有对其进行任何更改。因此,这就是我试图在PHP中实现的目标,但不确定这是什么样的哈希格式。我假设它是SQL Server.Hmm的标准。我没有。但是,函数存储在数据库中,一个nd您可能还原了以前的数据库以获取当前数据库?要确认,您可以尝试创建一个新的空数据库(不必在其中包含任何内容),然后在其中运行
SELECT dbo.HashPasswordString('MyPassword')
你说得对。它在函数中,因为我还原了数据库。所以,在我找到函数(它不是一个大函数:)后,我必须看看它是如何工作的,并在php中执行类似的操作。另外,将参数化语句与查询中包含的函数一起使用是否安全?我想这不是问题,只是问一下sql注入和安全性。tsql中没有这样的函数。对于该名称的用户定义CLR函数,不存在任何限制。您应该询问负责此数据库的人员,了解函数及其实现方式。