2016-05-21 20 views
1

現在、HashBytes SHA2_512 SALTの組み合わせパスワードから認証するWebサイトを更新しています。SQLアップデートHashBytes SHA2_512のパスワード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で更新する必要があります。

これが可能かどうかわかりませんが、唯一の回避策はユーザーに電子メールを送信し、サイトから新しいパスワードを要求することですか?

ありがとうございました。

+0

@artjomのおかげ:

そして、それは次のようにちょうど別のconditonです。これは、私のユーザーにとって一番良いルートと少ない痛みであるかもしれません。私はすぐに見て回っている。 – raymantle

+1

これは、ハッシュに接頭辞を付けることをお勧めします。 – zaph

+0

@zaph「プレフィックスハッシュにバージョンを付ける」という意味で説明できますか? – raymantle

答えて

1

ハッシュされたパスワードを「復号化」する方法はありません。パスワードがsaltで暗号化されている場合に格納する列(ビット)を追加しないでください。

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