SQL与服务器的身份验证(Crypto.VerifyHashedPassword / HashBytes)

时间:2015-07-10 15:38:31

标签: c# tsql security

我有一个应用程序,在数据库中存储散列密码。应用程序是用.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>' ))

0 个答案:

没有答案