SG11在线加密系统使用教程

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

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

SG11 是一款广泛用于 PHP 源码保护的商业混淆与加密工具,其核心为 Zend 引擎级扩展(sg11.sophp_sg11.dll),支持 PHP 5.3–8.2。需注意:SG11 本身不提供“在线加密服务”——所谓“SG11在线加密系统”实为第三方封装的 Web 接口(如基于 sg11-cli 的 REST API),本文以典型集成方式为例,介绍如何在 PHP 项目中安全调用其加密能力。

✅ 前置准备

  • 已安装 SG11 扩展(Linux 下执行 php -m | grep sg11 验证)
  • 获取合法授权文件(sg11.lic)并置于项目根目录或指定路径
  • 确保目标 PHP 文件无语法错误(SG11 加密前会严格校验)

🔧 本地 CLI 加密示例(推荐)

SG11 官方提供命令行工具 sg11-cli,可集成至构建流程:

# 加密单个文件(保留原始结构)
sg11-cli --input=index.php --output=dist/index.php --license=./sg11.lic

# 批量加密整个目录(排除 .git、vendor 等)
sg11-cli --input=./src --output=./dist --exclude=".git|vendor|tests" --license=./sg11.lic

🌐 模拟“在线加密系统”调用(PHP 封装)

若需通过 HTTP 接口调用远程加密服务(如内部 DevOps 平台),可使用以下安全封装:

<?php
function encryptViaSG11API(string $sourceCode, string $licenseKey): array
{
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => 'https://api.your-company.com/sg11/encrypt',
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => json_encode([
            'code' => base64_encode($sourceCode),
            'license' => $licenseKey,
            'php_version' => PHP_VERSION_ID,
        ]),
        CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_SSL_VERIFYPEER => false, // 生产环境请启用证书验证
    ]);

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($httpCode !== 200) {
        throw new RuntimeException("加密服务异常:HTTP {$httpCode}");
    }

    $result = json_decode($response, true);
    if (empty($result['success']) || empty($result['encrypted'])) {
        throw new RuntimeException("加密失败:" . ($result['error'] ?? '未知错误'));
    }

    return [
        'encrypted_code' => base64_decode($result['encrypted']),
        'checksum' => $result['checksum'] ?? md5($result['encrypted'])
    ];
}

// 使用示例
try {
    $raw = file_get_contents('./src/app.php');
    $result = encryptViaSG11API($raw, 'your-license-key-here');
    file_put_contents('./dist/app.php', $result['encrypted_code']);
    echo "✅ 加密完成,校验和:{$result['checksum']}\n";
} catch (Exception $e) {
    error_log('SG11加密失败:' . $e->getMessage());
    die('加密服务不可用,请检查配置');
}
?>
💡 提示:生产环境中建议将加密操作移至 CI/CD 流水线(如 GitHub Actions),避免敏感 License Key 泄露;严禁在客户端暴露加密接口。
⚠️ 重要提醒:SG11 加密后代码仅能在安装对应 SG11 扩展的服务器上运行。部署前务必确认目标环境已正确加载扩展:
php -r "if (extension_loaded('sg11')) echo 'SG11 OK'; else echo 'MISSING';"

掌握 SG11 的正确集成方式,可有效保护核心业务逻辑。但请始终牢记:代码安全 = 技术防护 + 流程管控 + 权限最小化。加密只是纵深防御的一环,切勿过度依赖。

本文基于 SG11 v8.x 编写,具体参数请参考官方文档:https://www.phpsg11.com/

```