Установка соли для password_hash()

Я создаю сценарий массового импорта пользователей в PHP для owncloud. Я читаю пользователей из CSV-файла, затем добавляю их в файл owncloud database. Но у меня проблема с паролями. Насколько мне известно, owncloud использует password_hash() с BCRYPT. У меня есть passwordsalt, но я не знаю, как использовать эту соль с password_hash().

Любая помощь там, ребята?


person CaptainQuint    schedule 07.01.2016    source источник
comment
Bcrypt генерирует собственную соль — вам не нужно ее добавлять. Вам также не нужно хранить его, поскольку генерируемая солью bcrypt является частью результирующего хэша bcrypt.   -  person JimL    schedule 07.01.2016
comment
Это просто и даже не заслуживает ответа. Просто добавьте соль где-нибудь к паролю, который вы хешируете. В начале, в конце, или в обоих, или где угодно. Причина такой практики в том, что люди могут создавать словари хэшей для паролей, что упрощает поиск общих паролей в украденных базах данных. SALT помогает, так как все пароли становятся уникальными, даже если это qwerty   -  person AlexanderMP    schedule 07.01.2016


Ответы (2)


Используйте соль в массиве параметров, как это

password_hash("rasmuslerdorf", PASSWORD_BCRYPT, array("cost" => 7, "salt" => "thisisyoursalt"));

Но использовать собственную соль — не лучшая идея. Позвольте password_hash() создать соль для вашего пароля. password_hash() создаст разные соли для каждого пароля. Это повысит надежность вашего пароля.

person Neel Ion    schedule 07.01.2016
comment
Возможно, следует включить примечание о том, почему использовать собственную соль — плохая идея ^^ - person JimL; 07.01.2016
comment
У owncloud, похоже, есть другой способ сделать это. Я получаю разные пароли, используя их соль, но я понимаю, почему не стоит использовать предопределенную соль. - person CaptainQuint; 07.01.2016
comment
Спасибо за Ваш ответ. Я отметил ваш ответ как правильный, поскольку он отвечает на мои вопросы, просто не совсем соответствует моим требованиям. Мне удалось заставить его работать, так что спасибо. - person CaptainQuint; 07.01.2016

Если хэши создаются password_hash() или crypt(), то соль включается в результирующее хеш-значение. Чтобы проверить пароль по этому хешу, вы можете использовать функцию password_verify() эта функция автоматически извлекает соль и другие параметры.

// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($password, $existingHashFromDb);
person martinstoeckli    schedule 13.01.2016