【问题标题】:codeigniter encrypt returning wrong on new servercodeigniter encrypt 在新服务器上返回错误
【发布时间】:2014-06-17 23:20:17
【问题描述】:

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

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

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

【问题讨论】:

    标签: php mysql codeigniter encryption


    【解决方案1】:

    可能是服务器配置问题。

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

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

    更新:

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

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

    【讨论】:

    • 我现在就试试。谢谢。
    • 我收到一个错误:A PHP Error was encountered Severity: Notice Message: Use of undefined constant MCRYPT_MODE_ECB - assumed 'MCRYPT_MODE_ECB' Filename: libraries/Encrypt.php Line Number: 188
    • 这是否意味着新服务器没有 Mcrypt 支持/启用?
    • 看起来是这样。检查您的错误日志application/logs/您可能禁用了一些扩展,因此解码不匹配。
    • 我已经给他们发了一封电子邮件。谢谢您的帮助。我像往常一样在配置文件中将错误日志设置为 1。它没有记录,这让我很困扰。我将报告我的服务器人员必须说的话。
    猜你喜欢
    • 1970-01-01
    • 2019-02-15
    • 2023-03-15
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2019-10-16
    相关资源
    最近更新 更多