php 7.1 废弃 mcrypt 扩展,因其过时(libmcrypt 自2007年停更)、不安全(零填充易受 padding oracle 攻击、iv 处理松散)和难维护(api 陈旧、无现代密码学支持);openssl 提供标准化算法、安全随机数、可控填充及严格参数校验,推动加密基础设施升级。

PHP 7.1 废弃 mcrypt 扩展,核心原因就三点:过时、不安全、难维护。
它早在 PHP 7.1 之前就已停止更新近十年,底层依赖的 libmcrypt 库自 2007 年起就不再活跃开发。官方明确指出,该扩展“用起来很复杂”,API 设计陈旧(比如需要手动管理模块打开/关闭、IV 初始化、填充补全),且缺乏现代密码学实践支持。
更关键的是安全性隐患:
- 默认零填充(Zero Padding)易受 padding oracle 攻击,而它不提供 PKCS#7 填充等更安全的选项;
- IV 处理松散,允许复用或长度不校验,增加重放与预测风险;
- 随机数生成依赖
mcrypt_create_iv()(如MCRYPT_DEV_RANDOM),在部分系统上可能退化为弱熵源。
OpenSSL 扩展则天然支持:
- 标准算法标识(如
'AES-128-CBC'); - 密码学安全的随机数(配合
random_bytes()); - 明确的填充控制(通过标志位
OPENSSL_PKCS1_PADDING或手动处理); - 更严格的参数校验(如 IV 长度强制匹配模式要求)。
所以不是“换个函数就行”,而是整个加密基础设施升级——废弃 mcrypt 是为了推动开发者采用更可靠、标准化、可审计的加密方式。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











