2016-05-21 4 views
1

В настоящее время я обновляю веб-сайт для аутентификации с помощью пароля комбинации SALT HashBytes SHA2_512.SQL update HashBytes SHA2_512 пароли к HashBytes SHA2_512 SALT

Моя проблема заключается в том, что как только я это сделаю, все мои текущие пользователи больше не смогут входить в систему со своим существующим паролем HashBytes SHA2_512.

Есть ли способ расшифровать (обновить) через SQL текущий пароль HashBytes SHA2_512 с помощью пароля комбинации SALT HashBytes SHA2_512.

Вот пример моего выбора для проверки.

//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.

Я не уверен, что это может быть сделано, и единственным обходным решением было бы отправить моих пользователей по электронной почте и попросить их запросить новый пароль с сайта?

Спасибо.

+0

@artjom Спасибо. Это может быть лучший маршрут и меньше боли для моих пользователей. У меня есть взгляд и ответ в ближайшее время. – raymantle

+1

Это отличный пример того, почему рекомендуется использовать хеши-префикс с версией. – zaph

+0

@zaph Можете ли вы объяснить, что вы имеете в виду «хеши префикса с версией» – raymantle

ответ

1

Невозможно «расшифровать» хешированный пароль. Почему бы вам не добавить столбец (бит), где вы храните, если пароль зашифрован солью или нет.

Тогда это просто еще один Conditon как:

AND ((isSalted = false 
     AND strUserPassword =HashBytes('SHA2_512', 'Rice205H*!')) 
    or [AccountPwd] =HashBytes('SHA2_512', [Salt] + 'Rice205H*!')) 
Смежные вопросы