我有一个应用程序,在数据库中存储散列密码。应用程序是用.Net编写的,它使用SQL Server 2012.认证工作流程如下:
服务器端验证存储的散列密码与使用此代码键入的密码:
Crypto.VerifyHashedPassword(hashedPassword,password);
我想知道这是否可以仅在数据库中完成,以及该方法的缺点是什么。我知道我将向TSQL存储过程发送明文密码。
我正在阅读HashBytes,它似乎是哈希的候选人。似乎我可以散列它并将其转换为NVARCHAR字段并对其进行比较,如下所示:
SELECT
....
FROM dbo.Users
WHERE EmailAddress = '<Entered_EmailAddress>'
AND Password = master.dbo.fn_varbintohexstr(HashBytes('SHA2_256', '<Entered_Password>' ))