6

有一些庞大的遗留系统对 PHP 的依赖mcrypt非常重要和至关重要(包括数据库中的数据存储)。我需要找到一种方法来维护这个库,同时升级到 PHP 7.2(已经运行良好)。

我的本地测试环境是 Windows。实时环境在 CentOS 上运行。

我看到的一些答案是解密并将 mcrypt 更改为 openssl (我认为目前这是不可能的,因为要解密的数据很多)。

另一种方法是使用 -support 下载较低的 PHP 版本mcrypt,复制扩展并将其添加到 php.ini(我什至不知道文件夹)。

由于安全问题,将 PHP 降级到 5.6 不适合。

在这种情况下可以做什么?

4

3 回答 3

9

基本上我认为你已经提到了所有的可能性,你别无选择。不要降级到 PHP 5.6 这种方法没有前途

MCrypt 已从 PHP 中删除,这是您想要升级 PHP 的主要原因之一:安全性。MCrypt 库不再维护。因此安装 MCrypt 扩展也是一个坏主意。但这可能是一个临时解决方案(例如遵循这些说明https://serverpilot.io/community/articles/how-to-install-the-php-mcrypt-extension.html)。

唯一好的解决方案是从mcrypt 迁移到其他东西。Stackoverflow 上已经有关于这个主题的问题(例如,将我的加密库从 Mcrypt 升级到 OpenSSL)。或者,您可以使用一些加密库。迁移大量代码/数据可能会很痛苦,但在这种情况下,这是最面向未来的方法。

于 2018-03-16T15:34:26.867 回答
4

尽管有所有警告和建议,如果您仍需要使其正常工作,请尝试以下操作:

  1. 找到您的 PHP 目录。通常它位于 C:\Program Files\PHP\v7.2
  2. 然后去这个网址: http: //pecl.php.net/package/mcrypt/1.0.3/windows
  3. 下载更符合您要求的软件包。例如,如果您使用 FastCGI 并安装 64 位 Windows,请选择 7.2 Non Thread Safe (NTS) x64
  4. 打开 zip 并将 php_mcrypt.dll 文件复制到 C:\Program Files\PHP\v7.2\ext 目录。
  5. 编辑 php.ini 文件并将其添加到动态扩展部分: extension=php_mcrypt.dll
  6. 保存 php.ini 并重新启动您的 Web 服务器。

希望能帮助到你。

于 2020-05-28T23:20:29.613 回答
0

请注意,没有关于mcrypt选项/代码的代码或信息。

可能唯一的问题非标准空填充由mcrypt. 要使用不支持空填充(它是非标准的)的另一个实现进行解密,只需在没有填充的情况下解密,然后删除空填充。

如果您还必须加密,mcrypt只需添加空填充并使用无填充进行加密。

真正考虑迁移当前加密或添加一些加密(或不)mcrypt兼容的标志。

于 2018-03-16T19:33:59.603 回答