Я пытаюсь выяснить, как сохранить хэш в моей базе данных Access.Теперь я сгенерировал хэш, добавив пароль пользователя с идентификатором пользователя (я знаю, что это не слишком безопасно, но достаточно для моих целей).Я также сохранил хешированные значения в базе данных в виде строк Base64 (вручную, я еще не разработал модуль для этого автоматически), однако, когда я иду, чтобы получить хеш из базы данных, я получаю шестнадцатеричный код вместострока.Я знаю, что строка хранится в базе данных, так как я хранил ее там вручную, поэтому я не совсем уверен, что происходит.
Это код для кнопки входа в систему:
Sub prcLogin()
'Log User in
Dim ds As New DataSet
Dim blnCorrect As Boolean
'Fill DataSet with login details
prcConnectSet("SELECT * FROM Parent", "User", ds)
strUser = txtUser.Text
'Ensure username field is not blank
If strUser <> "" Then
'Search for the user
For Each Row In ds.Tables("User").Rows
Dim HashedPass As String = fncComputeHash(txtPass.Text & strUser)
Dim ContainedPass As String = Row.Item(3)
'Validate user
If strUser = Row.Item(0) Then
If HashedPass = Row.Item(3) Then
blnCorrect = True
lblLoggedAs.Text = Row.Item(1)
Exit For
End If
Else
blnCorrect = False
End If
Next
End If
И это код для хеш-калькулятора:
Function fncComputeHash(ByVal PasswordField As String) As String
Dim Hasher As New SHA256CryptoServiceProvider()
Dim encoder As New UTF8Encoding()
Return Convert.ToBase64String(Hasher.ComputeHash(encoder.GetBytes(PasswordField)))
End Function
Но когда я запускаю это вместо того, чтобы возвращать значение типа "rlzhYoiO4 + vpdJdsrFq5Sj9VBJ + FFYhIg9V5 + z + jeNI =", которое я сохранил в базе данных,он возвращает значение типа «5C6BED0D94B9BE8AFBC5C8CAC1E9D4BE03F556917C2611EC56F4E6F341EF60D9».Теперь, как мне обойти это?Я неправильно храню значения?Должен ли я хранить их как байтовый массив?Если да, то как мне это сделать?Или я получаю значения неправильно?Или все в порядке, и я должен преобразовать значение, как только получу его обратно из базы данных?
Я очень новичок во всей этой проблеме шифрования и даже аутентификации, так что если я делаю что-то глупое, скажите мне,
Заранее спасибо!
Редактировать: Я использую тип данных "Текст" в Access.
Редактировать 2: Извините, теперь я понимаю путаницу.Я храню только хэш!Не открытый пароль.Поэтому очень важно, чтобы хеш, полученный из базы данных, был в том же формате, что и идентификатор пользователя и пароль.
Редактировать 3: ОК Спасибо, ребята, я решил это.Мне нужно было преобразовать его в шестнадцатеричную строку, используя функцию SoapHexBinary.