Используя SHA256 + SHA512 хеш для пароля? - PullRequest
4 голосов
/ 01 декабря 2011

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

    Dim result As Byte()
    Dim mixer As String

    Try
        Dim sha As New SHA512CryptoServiceProvider

        mixer = txt_salt.Text.ToUpper + txt_pass.Text.Trim
        result = sha.ComputeHash(System.Text.Encoding.ASCII.GetBytes(mixer))

        txt_sha.Text = Convert.ToBase64String(result)
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try

Спасибо.

1 Ответ

5 голосов
/ 01 декабря 2011

Недостаточно.

  1. Без соли:
  2. Хеши слишком быстрые:
    • уязвимы для грубой силы (если хеши утечки)
    • большинство алгоритмов хеширования разработаны так, чтобы быть быстрыми
    • решение: bcrypt , scrypt или несколько (много !!!) раундов
  3. Нет HMAC:
    • не имеет дополнительного "секрета сервера" (хранится вне базы данных!)
    • решение: hmac-sha1 и т. Д.
  4. Не является частью хорошо протестированной библиотеки / инфраструктуры для аутентификации:
    • это реализация "Roll your own"
    • : не изобретайте колесо, если только оно не является одним из этих или этих :)

Что касается "битов", то SHA1 прекрасно работает с 160 (но это не хорошо [само по себе] по другим причинам). Выполнение обоих SHA256 + SH512 только усложняет дело для нулевого усиления . (На самом деле, это очень небольшой чистый убыток из-за дополнительных требований к хранилищу.)

Я предлагаю использовать существующую библиотеку / систему, если это не академический проект:)

Удачного кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...