可使用在线工具、本地php脚本、openssl、sodium扩展或php-decrypter cli工具还原php混淆代码:一、用unphp.net等网站解base64/gzinflate/eval;二、本地运行decrypt.php处理敏感内容;三、用openssl_decrypt还原aes加密;四、用sodium_crypto_secretbox_open解secretbox密文;五、用php-decrypter批量解密。

如果您需要还原被混淆或编码的PHP代码,但又无法使用商业授权工具,则可能是由于代码未采用Zend或IonCube等闭源加密方式,而是使用了常见可逆编码或函数封装。以下是解决此问题的步骤:
一、使用在线Base64/gzinflate/eval解密工具
此类工具专为处理PHP中常见的轻量级混淆手法设计,如base64_encode、gzinflate+base64_encode、str_rot13、eval组合等,无需安装环境,直接粘贴加密字符串即可获得原始PHP代码。
1、访问 unphp.net 或 deobfuscate.io 网站。
2、将混淆后的PHP代码(含eval、base64_decode、gzinflate等调用)完整复制到输入框中。
立即学习“PHP免费学习笔记(深入)”;
3、点击“Decode”或“Deobfuscate”按钮,等待页面返回解析后的明文代码。
4、检查输出内容是否包含可读的PHP语法结构,如function定义、echo语句或require路径。
二、本地运行PHP解密脚本
当网络环境受限或需处理敏感代码时,可在本地PHP环境中执行简易解密逻辑,避免数据上传风险,适用于已知混淆链路(如多层base64嵌套、gzinflate叠加)的场景。
1、新建一个名为decrypt.php的文件,用文本编辑器写入以下内容:
2、在命令行中执行:php decrypt.php "加密字符串",其中引号内为待解密内容。
3、若输出为空或报错,检查字符串是否含多余空格、换行或HTML实体编码,需先用html_entity_decode()处理。
4、对多层嵌套情况,将base64_decode()调用替换为循环解码,例如while (base64_decode($s) !== false) { $s = base64_decode($s); }。
三、使用PHP内置OpenSSL函数还原AES加密内容
当目标数据由PHP的openssl_encrypt生成且您持有密钥与IV时,可直接调用openssl_decrypt完成解密,该方法依赖参数完全匹配,不适用于未知密钥的暴力破解场景。
1、确认加密时使用的算法标识符,例如AES-128-CBC或AES-256-ECB,并获取对应密钥与初始化向量(IV)。
2、编写解密代码:$decrypted = openssl_decrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);。
3、验证$decrypted是否为false,若为false则说明密钥、IV或填充方式不匹配,需重新核对加密端配置。
4、对ECB模式加密内容,省略IV参数;对PKCS#7填充的数据,无需手动trim,openssl_decrypt已自动处理。
四、调用Sodium扩展解密secretbox密文
Sodium是PHP 7.2+默认集成的安全加密扩展,其sodium_crypto_secretbox_open函数用于验证并解密由sodium_crypto_secretbox生成的密文,要求密钥、nonce与加密时严格一致。
1、确认PHP版本不低于7.2,并通过extension_loaded('sodium')验证扩展已启用。
2、从加密数据中分离出前24字节作为nonce,剩余部分为密文主体。
3、调用解密函数:sodium_crypto_secretbox_open($ciphertext, $nonce, $key)。
4、若返回false,表示认证失败,可能原因为nonce错误、密钥错误或密文被篡改,不可忽略该返回值。
五、使用开源命令行工具php-decrypter
php-decrypter是一个轻量级CLI工具,支持识别并递归展开eval、base64、gzinflate、str_rot13等PHP混淆模式,适合批量处理多个文件,运行于Linux/macOS终端或Windows WSL环境。
1、通过Git克隆仓库:git clone https://github.com/benjaminsmith/php-decrypter.git。
2、进入目录后执行chmod +x decrypter.php赋予执行权限。
3、运行解密命令:php decrypter.php /path/to/obfuscated.php。
4、输出结果将显示逐层解包过程及最终PHP源码,若某层解密失败会标注具体函数与位置。











