Я пытаюсь получить sh паролей, используя библиотеку CodeIgniter 3 «Community Auth», и я думаю, что обнаружил, что работают только определенные специальные символы. Я просто не могу сказать, почему или что на самом деле с ними происходит.
- Вот пример действующего пароля: KA83 ** 8! D #
- Вот пример пароля, который работает НЕ работа: 1aA! @ #% ^ & * () -_ = + {};:, <.>
Edit: Я должен уточнить что пароли сохраняются в БД, но попытка входа в систему не работает.
Если я вытащу указанные ниже методы в одну функцию, которая выполняет hash_passwd и password_verify, тогда сравнение будет работать для обоих паролей .
Следует ли мне использовать preg_quote в строке, чтобы она правильно сохранялась в базе данных? Я пробовал, но, похоже, это ни на что не повлияло.
Вот два метода, которые я использую для изменения пароля, а затем третий для проверки входа в систему.
Model = application \ models \ User_model. php
Method = change_password
$this->db->where('user_id', $user_data->user_id)
->update(
$this->db_table('user_table'), [
'passwd' => $this->authentication->hash_passwd($password),
'passwd_recovery_code' => NULL,
'passwd_recovery_date' => NULL
]
);
Model = application \ third_party \ community_auth \ libraries \ Authentication. php
Метод = hash_passwd
public function hash_passwd($password) {
return password_hash($password, PASSWORD_BCRYPT, ['cost' => 11]);
}
Модель = application \ third_party \ community_auth \ libraries \ Authentication. php
Method = check_passwd
public function check_passwd($hash, $password) {
if (password_verify($password, $hash)) {
return TRUE;
}
return FALSE;
}