codeigniter加密/解密函数返回空字符串

时间:2017-02-07 07:32:44

标签: php codeigniter

我正在尝试使用codeigniter登录,但无法执行此操作。 然后我尝试从DB复制密码并将其传递给dycription-> decode()函数,并且它返回空字符串。

这是代码

var_dump($this->encryption->decode('s0xxxxxxXjrUxxxxxxBTxxxxhc'));

输出为:字符串(0)""

此代码也返回空字符串

$decoded_password = $this->encryption->decode($encoded_password); 
$decoded_username = $this->encryption->decode($encoded_username);

我在这里做错了什么?

更新:我尝试加密字符串并打印IT然后解密并打印,加密后返回NULL / Empty,解密后返回NULL / Empty(明显)。 代码如下

$encval = $this->encryption->encode('codeigniter');
echo $encval.'  --  IT WAS --'.'codeigniter';
echo "<br>---------------------------------------------------<br>";
echo $this->encryption->decode($encval);

OUTPUT:^ Nothing

4 个答案:

答案 0 :(得分:1)

看,有两种方法可以在CI中使用加密,两者都不应该用于密码(使用散列)。首先找出哪一个用于加密密码然后存储在DB中。另外,在加密密码检查时可能还会使用某种KEY。

以下是CI中可用的2个加密库。

1.加密课程:https://www.codeigniter.com/user_guide/libraries/encrypt.html

2.Encryption Lib:https://www.codeigniter.com/user_guide/libraries/encryption.html

答案 1 :(得分:0)

我已经通过使用Codeigniter的加密库解决了这个问题,我的应用程序中当前使用的库有点修改,所以它破了。现在

$this->encryption->decrypt($cipher-text);
$this->encryption->encrypt($plain-text);

这很完美。我不得不用加密/解密替换所有编码/解码。

感谢你的时间guyz

答案 2 :(得分:0)

我也遇到了这个问题。我的问题来自数据库列varchar长度限制。.因此,密文丢失了部分。.我将列长度从50更改为250,然后默认选项解码和编码正常工作

答案 3 :(得分:0)

注意*:如果未加载驱动程序,您可能需要加载驱动程序

$this->encryption->initialize(
  array(
    'driver' => 'openssl',
    'cipher' => 'aes-256',
    'mode' => 'ctr',
    'key' => '123456' // OR any hash if empty then takes from config file
  )
);

// 切换到 MCrypt 驱动

$this->encryption->initialize(array('driver' => 'mcrypt'));

// 切换回 OpenSSL 驱动

$this->encryption->initialize(array('driver' => 'openssl'));

参考:https://codeigniter.com/userguide3/libraries/encryption.html