Я знаю, что это старый вопрос, но у меня была такая же проблема, и я понял это.
Библиотека шифрования CodeIgniter ведет себя по-разному в разных средах. В частности, библиотека автоматически обнаруживает, если у вас установлено расширение PHP mcrypt, и, если это так, использует совершенно другой алгоритм, чем в противном случае.
Возможно, на вашем сервере установлен mcrypt, а не среда разработки или наоборот.
Есть два способа это исправить. В любом случае вам необходимо расширить встроенный класс шифрования, создав класс MY_Encrypt.php:
Вариант один : всегда использовать mcrypt и громко проваливаться, если он не установлен:
class MY_Encrypt extends CI_Encrypt
{
public function __construct()
{
if ( ! function_exists('mcrypt_encrypt')) {
throw new Exception("Encryption requires mcrypt PHP extension!");
}
parent::__construct();
}
}
Вариант второй : Никогда не используйте mcrypt, даже если он установлен:
class MY_Encrypt extends CI_Encrypt
{
public function __construct()
{
parent::__construct();
//Pretend Mcrypt doesn't exist no matter what
$this->_mcrypt_exists = FALSE;
}
}
Это приведет к тому, что шифрование CodeIgniter будет работать одинаково в любой среде.
ИМХО, библиотека шифрования не должна никогда молча менять алгоритм, используемый для шифрования, в зависимости от среды. Изменения алгоритма автоматического шифрования - ужасная идея.