当前位置:首页 > PHP

php 实现license授权

2026-02-16 03:23:09PHP

PHP 实现 License 授权的方法

使用加密算法生成 License

PHP 可以通过加密算法(如 AES、RSA)生成 License 文件或字符串。以下是一个使用 AES 加密生成 License 的示例:

<?php
function generateLicense($data, $key) {
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
    $encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv);
    return base64_encode($iv . $encrypted);
}

$licenseData = json_encode(['expiry' => '2025-12-31', 'user' => 'example']);
$secretKey = 'your-secret-key-32-chars-long';
$license = generateLicense($licenseData, $secretKey);
echo $license;
?>

验证 License 的有效性

验证 License 时需要解密并检查内容(如过期时间、用户信息等):

php 实现license授权

<?php
function validateLicense($license, $key) {
    $data = base64_decode($license);
    $ivLength = openssl_cipher_iv_length('aes-256-cbc');
    $iv = substr($data, 0, $ivLength);
    $encrypted = substr($data, $ivLength);
    $decrypted = openssl_decrypt($encrypted, 'aes-256-cbc', $key, 0, $iv);

    if ($decrypted === false) {
        return false;
    }

    $licenseInfo = json_decode($decrypted, true);
    return $licenseInfo['expiry'] >= date('Y-m-d');
}

$isValid = validateLicense($license, $secretKey);
echo $isValid ? 'Valid License' : 'Invalid License';
?>

使用数字签名确保 License 完整性

结合 RSA 签名可以防止 License 被篡改:

php 实现license授权

<?php
function signLicense($data, $privateKey) {
    openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256);
    return base64_encode($signature);
}

function verifyLicense($data, $signature, $publicKey) {
    $signature = base64_decode($signature);
    return openssl_verify($data, $signature, $publicKey, OPENSSL_ALGO_SHA256) === 1;
}

$privateKey = openssl_pkey_get_private('file://path/to/private.key');
$publicKey = openssl_pkey_get_public('file://path/to/public.key');

$signature = signLicense($licenseData, $privateKey);
$isVerified = verifyLicense($licenseData, $signature, $publicKey);
?>

绑定 License 到特定机器或域名

通过获取服务器或客户端的唯一标识(如 MAC 地址、域名)并嵌入 License 中:

<?php
function getServerFingerprint() {
    return md5($_SERVER['SERVER_NAME'] ?? gethostname());
}

$licenseData = json_encode([
    'expiry' => '2025-12-31',
    'fingerprint' => getServerFingerprint()
]);
?>

定期检查 License 状态

在应用启动或定时任务中验证 License:

<?php
function checkLicense() {
    $licenseFile = 'path/to/license.key';
    $license = file_get_contents($licenseFile);
    if (!validateLicense($license, $secretKey)) {
        exit('License expired or invalid');
    }
}

checkLicense();
?>

标签: phplicense
分享给朋友:

相关文章

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php无限分类的实现

php无限分类的实现

PHP无限分类的实现 无限分类是一种常见的树形结构数据组织方式,适用于商品分类、菜单管理、地区选择等场景。以下是几种实现方法: 递归实现法 递归是最直观的实现方式,通过函数自身调用来遍历子分类。数据…

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…

无限分类实现 php

无限分类实现 php

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、部门架构等。以下是几种常见的实现方式: 邻接列表模式(Adjacency List) 邻接列表是最简单的实现方式,通过在每个记录…