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

标签 php mysql codeigniter encryption

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

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

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

最佳答案

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

新服务器是否支持/启用Mcrypt

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

更新:

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

这可能是你的问题。询问您的托管提供商有关启用所需(检查源文件)php 扩展的信息

关于php - codeigniter 加密在新服务器上返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23408394/

相关文章:

mysql - 使用2个Mysql表计算一个变量并根据该变量进行选择

javascript - 在 Codeigniter 中使用 Ajax 进行 CRUD

php - 相当于 PHP multi_query 的 Codeigniter 是什么

php - 我的 session 变量是如何在远程页面上定义的?只是对背景知识感到好奇

php - 如何为 SOAP 客户端功能创建适当的 xml?

mysql - "sql_mode=only_full_group_by"不兼容错误

Mysql更新,选择替换长字符串中的指定字符

php - 如何使用 form_validation 和 CodeIgniter 设置自定义错误消息

php - Laravel 用户名身份验证不区分大小写

php - Ionic 2 在使用 php 和 mysql 发出发布请求时给出错误响应