【发布时间】: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