codeigniter加密在新服务器上返回错误

时间:2014-05-01 13:12:01

标签: php mysql codeigniter encryption

我在旧的Linux服务器上有一个数据库,用于保存我的客户端登录信息。用户名和密码,使用CodeIgniter加密库加密。我正在将服务器更改为新的Linux服务器。我已将站点和数据库转移到新服务器。该站点获取输入的用户名和密码,从新服务器上的数据库中提取密码,解密密码并将其与输入的密码进行比较。问题是在新服务器上返回的值完全不同,包含许多特殊字符,因此密码永远不会匹配!我认为它是新数据库的字符集,因为它被设置为UTF8而我的旧数据库是latin1,但我已经改变了它并且它完全相同。两个服务器上的站点相同,因此加密密钥是相同的。我完全不知所措。

解密前从数据库返回的值是正确的。

我知道这不是进行身份验证的最佳方式,我打算更改它,但请不要把这个问题作为一个机会告诉我这种做事有多糟糕......我只需要让它工作请:)

1 个答案:

答案 0 :(得分:1)

这可能是服务器配置问题。

新服务器是否支持Mcrypt

您可以尝试在解码前运行$this->encrypt->encode_from_legacy以查看是否存在兼容性问题。

<强>更新

Codeigniter将使用 mcrypt 进行编码/解码。如果未启用此扩展程序,则会使用 xor

这可能是你的问题。请求您的托管服务提供商启用所需的(检查源文件)php扩展