Расширение и использование кода генерации соли для системы входа в систему php

Я работаю над системой входа php/mysql для веб-проекта. После просмотра SO и множества статей в Интернете я придумал базовую структуру и начал писать для нее некоторый код. Однако я зашел в тупик в шифровании паролей.

После ночного чтения я узнал, что:

  • Я должен пароль пользователя с хотя бы sha1 или sha2
  • Я должен также использовать случайно сгенерированную соль (это то, что мне нужно помочь) и добавить его к паролю перед шифрованием
  • хешированный пароль и случайно сгенерированная соль должны храниться в базе данных, а затем запрашиваться и комбинироваться / шифроваться, а затем сверяться с хешированным паролем пользователя.

Моя проблема заключается в случайном генерировании соли,

2 ответа

Решение

Возможности, которые я могу придумать:

  • Используйте mt_rand() в цикле, чтобы выбрать ASCII-код, получить соответствующий символ с помощью chr () и объединить с солью.

    Это позволяет создавать соли любой длины.

  • Определите строку с доступными символами, используйте mt_rand() в цикле, чтобы выбрать из нее случайные позиции, извлеките символ в выбранной позиции с помощью substr() или mb_substr() и объедините с солью.

    Это позволяет создавать соли с выбранным набором символов и длиной.

  • Используйте встроенную функцию, которая генерирует случайную строку (например, uniqid ()) и при необходимости ее хеширует.

    Это быстро и просто.

Я обычно использую второй вариант.

Другие вопросы по тегам