SG11在线加密系统使用教程

```html SG11在线加密系统使用教程 | PHP 开发指南

SG11在线加密系统使用教程(PHP 开发指南)

注意:SG11 并非官方标准加密协议,而是国内部分 PHP 混淆/保护工具(如 SourceGuardian 的旧称 SG11)的俗称。本文所指为基于 SourceGuardian v11+ 的 PHP 代码加密与部署实践,适用于企业级源码保护场景。

一、环境准备

确保运行环境满足以下要求:

  • PHP 版本:7.0–8.2(SG11 不支持 PHP 8.3+)
  • 已安装 SourceGuardian Loader 扩展(需匹配 PHP SAPI 类型,如 php_sgx.sophp_sgx.dll
  • 验证扩展是否加载成功:
<?php
if (extension_loaded('sourceguardian')) {
    echo "✅ SourceGuardian 加载成功\n";
    echo "版本:" . phpversion('sourceguardian') . "\n";
} else {
    die("❌ SourceGuardian 扩展未启用,请检查 php.ini 配置");
}
?>

二、加密单个文件(命令行方式)

使用官方 Encoder 工具(Windows/Linux/macOS 均提供):

# Linux 示例:加密 index.php 为 PHP 8.0 兼容格式
./ioncube_encoder.sh --php-version 8.0 --encode index.php --output protected/index.php

# SG11 推荐命令(需 License)
sg11-encoder --php 7.4 --obfuscate --compress --file app.php --output app.php.encoded

三、PHP 中调用加密逻辑(示例)

SG11 本身不提供运行时加密 API,但可结合其 sg_load() 函数动态加载受保护文件:

<?php
// 加载已加密的配置文件(如 config.php.encoded)
$config_file = __DIR__ . '/config.php.encoded';
if (file_exists($config_file) && function_exists('sg_load')) {
    $config = sg_load($config_file);
    echo "数据库主机:" . ($config['db_host'] ?? 'N/A');
} else {
    throw new RuntimeException("加密配置文件不可用或 sg_load() 未定义");
}
?>

四、常见问题与规避建议

⚠️ 重要提醒:SG11 加密 ≠ 安全加密。它本质是代码混淆与执行保护,无法防止内存 dump 或调试器逆向。切勿用于存储密钥、密码等敏感数据;应配合环境变量或独立密钥管理服务。

若需在 PHP 中实现真正安全的数据加解密,推荐使用原生 openssl_encrypt()

<?php
function secureEncrypt(string $data, string $key): string {
    $ivlen = openssl_cipher_iv_length($cipher = "AES-256-CBC");
    $iv = openssl_random_pseudo_bytes($ivlen);
    $encrypted = openssl_encrypt($data, $cipher, $key, 0, $iv);
    return base64_encode($iv . $encrypted);
}

$key = hash('sha256', $_SERVER['HTTP_HOST'] ?? 'fallback-key', true);
echo secureEncrypt("secret_token_123", $key);
?>

结语

SG11 是成熟的 PHP 源码分发保护方案,但开发者须明确其定位——防直接查看,不防高级逆向。合理使用 + 分层防护(如 Web 服务器权限隔离、OPcache 配置、WAF 规则)才能构建可靠交付体系。始终遵循“最小权限”与“纵深防御”原则。

📚 参考文档:SourceGuardian 官方文档

```