有一些巨大的遗留系统依赖于PHP' mcrypt
非常重要且至关重要(包括数据库中的数据存储)。我需要找到一种方法来维护这个库,同时升级到PHP 7.2(已经工作正常)。
我的本地测试环境是Windows。实时环境在CentOS上运行。
我看到的一些答案是解密并将mcrypt更改为openssl(我认为目前还不可能,因为有很多数据要解密)。
另一种方式点亮下载带有mcrypt
的较低PHP版本 - 支持,复制扩展并将其添加到php.ini(我甚至不知道该文件夹)。
将PHP降级到5.6,由于安全问题,它不合适。
在这种情况下可以做些什么?
答案 0 :(得分:9)
基本上我认为你已经提到了所有可能性而且你没有选择。 不要降级到PHP 5.6这种方法没有未来 。
MCrypt已从PHP中删除,这是您要升级PHP:Security的主要原因之一。 MCrypt库不再维护。 因此,安装MCrypt扩展程序也是一个坏主意 。但它可以是一个临时解决方案(例如遵循那些说明https://serverpilot.io/community/articles/how-to-install-the-php-mcrypt-extension.html)。
唯一优秀的解决方案是从mcrypt迁移到 其他地方。 Stackoverflow上已经有关于此主题的问题(例如Upgrading my encryption library from Mcrypt to OpenSSL)。或者你可以使用一些加密库。迁移大量代码/数据可能会很痛苦,但在这种情况下,这是面向未来的最佳方法。
答案 1 :(得分:1)
尽管仍然需要所有警告和建议,否则请尝试以下操作:
希望有帮助。
答案 2 :(得分:0)
请注意,没有关于mcrypt
选项/代码的代码或信息。
可能是mcrypt
使用的非标准空填充的唯一问题。要使用另一个不支持空填充的实现进行解密(它是非标准的),只需解密而不填充,然后删除空填充。
如果您还必须加密mcrypt
,只需添加空填充并使用无填充加密。
真的考虑迁移当前加密或添加一些加密符合(或不符合)mcrypt
的标记。