вопрос генерации соли и хэша - PullRequest
0 голосов
/ 03 марта 2010

Я просто хотел бы получить ваши отзывы о чем-то.

В основном у меня есть значение с именем $ uniqueID, которое = ID + первая буква имени + первая буква фамилии + строка "CAN"

Затем я превратил $ uniqueID в значение соли, а затем $ salt = sha1 ($ uniqueID);

Затем я превратил пароль пользователя в хеш-значение, используя md5 ().

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

Мне просто интересно, будет ли это безопасный способ обеспечить два типа проверки пользователей? Проверка пароля будет выполняться пользователем, а $ uniqueID - с помощью сценария.

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

Я также добавил некоторые секретные для сессий.

Ответы [ 2 ]

1 голос
/ 03 марта 2010

В общем, соль - это случайное значение, уникальное для каждого элемента данных, для которого оно используется. Это означает, что каждый пользователь должен иметь свою собственную случайную и уникальную соль, которая используется при хешировании его пароля. И не используйте никакую пользовательскую информацию для генерации соли.

Вы можете, например, использовать rand и uniqid, чтобы сгенерировать случайную и уникальную соль для каждого пользователя:

$salt = uniqid(rand(), true);

Эта соль будет уникальной и случайной.

0 голосов
/ 03 марта 2010

Я бы рекомендовал использовать sha1 как для $uniqueID, так и для поля пароля.

Кроме того, не забудьте засолить поле пароля.

Кроме того, стоит отметить, что односторонние хэши могут получать одно и то же значение из разных входных данных. Как указывает Гамбо, если вы планируете использовать $uniqueID в качестве уникального идентификатора, у вас возникнут проблемы. (Так не надо; -)

Если вы хотите использовать uniqueID в качестве ключа сеанса, то вам следует хотя бы проверить наличие коллизий, прежде чем использовать его. См. Zend.Session , CodeIgniter-> session и Kohona :: Session

...