Hashbytesを使用してSQLに保存されている一部のプレーンテキストパスワードを変換した後、.Netが適切に一致するハッシュを生成するように見えません。
パスワードの変換に使用されるSQL:
UPDATE Users
SET UserPassword = HASHBYTES('SHA1', UserPassword + CAST(Salt AS VARCHAR(36)))
ここで、ハッシュの生成に使用される.Netコードは次のとおりです。
Dim oSHA1 As New System.Security.Cryptography.SHA1CryptoServiceProvider
Dim bValue() As Byte
Dim bHash() As Byte
bValue = System.Text.Encoding.UTF8.GetBytes(sPlainTextPass)
bHash = oSHA1.ComputeHash(bValue)
oSHA1.Clear()
Dim sEncryptPass As String = String.Empty
For i As Integer = 0 To bHash.Length - 1
sEncryptPass = sEncryptPass + bHash(i).ToString("x2").ToLower()
Next
いくつかの追加の注意事項:ソルトはデータベースに保存されます。sPlainTextPassには、パスワードとソルトがプレーンテキストで含まれています。ASCII、UTF7、UTF8などのいくつかの異なるエンコーディングを試しました。データベースフィールドは、私が理解していることからUTF8に一致するはずのvarcharです。
ヘルプ?