PHP加密授权源码解析与应用

```html PHP加密授权源码解析与应用

PHP加密授权源码解析与应用

在SaaS系统、商业插件或私有API服务中,授权机制是保障软件合法分发的关键环节。PHP虽无内置“授权引擎”,但可通过组合加密、签名与时间验证实现轻量级授权控制。

核心设计思路

典型授权流程包含三要素:唯一标识(如域名/机器码)有效期(时间戳)防篡改签名。推荐使用 openssl_sign() + base64_encode() 构建安全令牌,避免弱算法(如MD5、sha1)。

完整授权验证示例

<?php
// 【授权验证类】—— 简洁、可扩展、不依赖外部库
class LicenseValidator {
    private $publicKey;
    
    public function __construct($pemPath) {
        $this->publicKey = openssl_pkey_get_public(file_get_contents($pemPath));
        if (!$this->publicKey) throw new Exception('无效公钥');
    }
    
    public function verify($licenseData): bool {
        // 解析授权数据(JSON格式,Base64编码)
        $decoded = json_decode(base64_decode($licenseData), true);
        if (!$decoded || !isset($decoded['domain'], $decoded['expires'], $decoded['signature'])) {
            return false;
        }
        
        // 验证域名(支持通配符 *.example.com)
        $host = $_SERVER['HTTP_HOST'] ?? 'localhost';
        $allowed = $decoded['domain'];
        if ($allowed !== '*' && !fnmatch($allowed, $host)) {
            return false;
        }
        
        // 验证有效期
        if (time() > (int)$decoded['expires']) {
            return false;
        }
        
        // 验证签名(使用公钥验签)
        $payload = $decoded['domain'] . '|' . $decoded['expires'];
        return openssl_verify($payload, base64_decode($decoded['signature']), $this->publicKey, OPENSSL_ALGO_SHA256) === 1;
    }
}

// ✅ 使用示例(需提前生成密钥对)
try {
    $validator = new LicenseValidator('public.key');
    $license = 'eyJkb21haW4iOiAiKiIsImV4cGlyZXMiOiAxNzUwMDAwMDAwLCJzaWduYXR1cmUiOiAiTmFtZkxXQ0RrMj...' ; // 实际为长Base64字符串
    
    if (!$validator->verify($license)) {
        die('❌ 授权验证失败:许可证已过期、域名不匹配或已被篡改。');
    }
    
    echo '✅ 授权有效,系统正常运行。';
} catch (Exception $e) {
    die('授权模块异常:' . $e->getMessage());
}
?>
⚠️ 重要提醒: • 私钥(private.key)仅用于生成许可证,绝不可部署到客户端; • 公钥(public.key)可安全嵌入PHP代码; • 生产环境建议增加IP白名单、调用频次限制等辅助策略; • 此方案无法防御内存调试或代码反编译,高安全性场景应结合硬件绑定或云授权中心。

总结:PHP授权本质是「可信数据封装+服务端校验」。本文方案兼顾安全性与简洁性,适用于中小规模商业项目。真正的防护不在加密强度,而在于快速迭代能力——当授权被绕过时,能以最小成本发布新验证逻辑,才是可持续的授权哲学。

```