【问题标题】:SQL update HashBytes SHA2_512 passwords to HashBytes SHA2_512 SALT [duplicate]SQL将HashBytes SHA2_512密码更新为HashBytes SHA2_512 SALT [重复]
【发布时间】:2016-05-22 01:58:26
【问题描述】:

我目前正在更新一个网站以使用 HashBytes SHA2_512 SALT 组合密码进行身份验证。

我的问题是,一旦我这样做了,我所有当前用户将无法再使用他们现有的 HashBytes SHA2_512 密码登录。

有没有办法通过 SQL 解密(更新)当前的 HashBytes SHA2_512 密码和 HashBytes SHA2_512 SALT 组合密码。

这是我选择验证的示例。

//current which will no longer work once i have updated the page 

SELECT intcustomerid, strUserName, strUserPassword
FROM dbo.tblLoginControl WHERE strUserName = 'Dave' AND strUserPassword =HashBytes('SHA2_512', 'Rice205H*!')


//new one once I have update the page

SELECT [AccountName], [AccountPwd]
FROM [dbo].[SecurityAccounts] WHERE [AccountName]= 'Dave' AND [AccountPwd] =HashBytes('SHA2_512',  [Salt] +  'Rice205H*!')

所以我需要使用现有密码并使用 Salt 进行更新。

我不确定这是否可以做到,唯一的解决方法是向我的用户发送电子邮件并要求他们从网站请求新密码?

谢谢。

【问题讨论】:

  • @artjom 谢谢。这可能是最好的路线,对我的用户来说痛苦更少。我看了一下并很快回复。
  • 这是一个很好的例子,说明为什么在哈希前面加上一个版本是个好主意。
  • @zaph 你能解释一下“带有版本的前缀哈希”的意思吗
  • 如果您添加版本指示符,那么当(不是如果)需要更改方案时,无需使当前实现无效即可。这允许面向未来并逐步过渡到新版本。请注意,一些密码哈希方案使用 $x$ 前缀,其中 x 表示版本。

标签: sql encryption salt sha2


【解决方案1】:

没有办法“解密”散列密码。如果密码是否用盐加密,为什么不添加一个列(位)来存储。

那么这只是另一个条件:

AND ((isSalted = false 
      AND strUserPassword =HashBytes('SHA2_512', 'Rice205H*!'))
    or [AccountPwd] =HashBytes('SHA2_512',  [Salt] +  'Rice205H*!'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 2021-04-10
    • 1970-01-01
    • 2011-04-12
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多