1

我使用 codeigniter 加密库来保存编码的公司名称。它适用于 php 5.3。我将我的操作系统升级到 Ubuntu 14.04。所以现在我的php版本是5.5。旧保存的公司名称不起作用。相同的代码和相同的数据库在 php 5.4 机器上工作。

旧的加密公司名称

$name = 'atQ1tmBTVcLV8ieDFCx/+RxHxj1CWXXyPYbPI/Q0Cxqe2piMqA/w3ze88199DwfP1L6CFA1MSUWedwD1z0gMmw=='

$company_name = $this->encrypt->decode($name);

echo $company_name; //result - ¾Ôf–s÷nŽ^¨H‡éêÁOðq‹û'É>Åì¦Ô—

但它适用于新创建的公司。问题是什么?

4

2 回答 2

4

可能是您的新 php 安装没有安装 mcrypt 库(或者您的新安装有它,而旧安装没有)

编码库检查是否安装了扩展,如果没有安装它的自定义方法:

if ($this->_mcrypt_exists === TRUE)
{
    $enc = $this->mcrypt_encode($string, $key);
}
else
{
    $enc = $this->_xor_encode($string, $key);
}

反过来也是一样的:如果你有 mcrypt,它使用 mycrypt_decode($data, $Key),否则使用 _xor_decode($string, $key)。尝试安装 mcrypt

$ sudo apt-get install php5-mcrypt

它应该工作。或者您可以使用其他系统重新编码所有内容,但我建议使用前者。

注意 这是一个猜测,因为您没有告诉(到目前为止)您是否有扩展名(或者如果您以前没有)也没有说您的 CI 版本,所以我只是浏览了我服务器上的一个。但我很确定原因是这样的)

于 2014-05-19T05:20:58.243 回答
0

根据@Damien 我的项目库使用$this->_xor_decode($string, $key);Not $this->mcrypt_encode($string, $key);。因为 Ubuntu 14.04 中的 php 5.5 与 mcrypt 存在一些问题。

我已经从这个命令修复它。

sudo cp /etc/php5/mods-available/mcrypt.ini /etc/php5/apache2/conf.d/

sudo service apache2 restart
于 2014-05-19T07:12:48.557 回答