Я создал регистрационную форму, используя библиотеку шифрования codeigniter, чтобы хранить пароли пользователей следующим образом:
$encrypted_password = $this->encrypt->encode($this->input->post('password'));
Я заметил, что каждый раз, когда мы шифруем (событие, если мы шифруем один и тот же пароль), функция шифрования создает другой вывод.
Мой вопрос заключается в следующем: что является лучшим способом сравнить два зашифрованных пароля, когда пользователь пытается войти в систему, поскольку мы знаем, что каждый раз, когда мы шифруем, мы получаем другую зашифрованную строку?
Смотрите здесь: https://ellislab.com/codeigniter/user-guide/libraries/encryption.html
$encrypted_string = 'APANtByIGI1BpVXZTJgcsAG8GZl8pdwwa84';
$plaintext_string = $this->encrypt->decode($encrypted_string);
Класс encription использует симметричное кодирование. Поэтому для сравнения вам нужно расшифровать пароль и сравнить его. Если вы хотите использовать односторонний метод, используйте хеширование, исправьте меня, если я ошибаюсь, но codeigniter поддерживает только до sha1, поэтому, возможно, посмотрите здесь, что может предложить родной php: http://php.net/manual/en/function.hash.php
Вы также можете комбинировать оба метода, хешировать и шифровать.
do_hash
в CodeIgniter по умолчанию использует SHA1, но можно использовать иMD5
(если он указан)