【问题标题】:How to replace replace mcrypt_encrypt?如何替换替换 mcrypt_encrypt?
【发布时间】:2019-01-21 20:16:08
【问题描述】:

使用 PHP 7,我的网站不再正常工作。我试过网站上的推荐:https://gist.github.com/odan/c1dc2798ef9cedb9fedd09cdfe6e8e76,但还是不行。谁能帮帮我?

错误信息:

致命错误:未捕获的错误:调用 /is/htdocs/wp12891720_A49KPJU​​SEX/www/chat.php:115 中未定义的函数 mcrypt_encrypt() 堆栈跟踪:#0 /is/htdocs/wp12891720_A49KPJU​​SEX/www/chat.php(131 ): Crypt::encode('5c46ea88788a0aa...', Array) #1 {main} 在 /is/htdocs/wp12891720_A49KPJU​​SEX/www/chat.php 第 115 行抛出

class Crypt {
    static public function encode($key, $password) {
        $key .= date('Y-m-d H');
        return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), json_encode($password), MCRYPT_MODE_CBC, md5(md5($key))));
    }
}

【问题讨论】:

  • 这个怪物到底应该做什么?请不要告诉我这是某种身份验证系统的一部分。
  • open_ssl 通常是你想要使用的,你也可以使用 PHPSecLib 这是一个非常好的库。
  • 1.密码需要散列,而不是加密。 2. 为什么要将当前时间附加到密钥上? 3. 为什么json_encode()ing 密码? 4. IV 应该是随机的,而不是派生的。最后但并非最不重要的一点是,mcrypt 的 Rjindael 密码与任何其他库都不兼容,您需要重新编码所有内容。借此机会对您的密码进行哈希处理。 secure.php.net/manual/en/function.password-hash.php
  • 那个代码让我做噩梦...

标签: php web encryption


【解决方案1】:

因为,自 PHP 7.1.0 起,该函数已被弃用。查看官方网站PHP: mcrypt_encrypt - Manual。在我的开放中,您可以将其替换为 openssl_encrypt 方法

【讨论】:

    猜你喜欢
    • 2018-09-10
    • 2016-11-16
    • 2016-09-12
    • 1970-01-01
    • 2012-03-20
    • 2020-12-30
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    相关资源
    最近更新 更多