当前位置:首页 > 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
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
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 实现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
分享给朋友:

相关文章

php实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面向对…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…

php array实现

php array实现

PHP 数组实现 PHP 数组是一种灵活的数据结构,可以存储多个值。以下是几种常见的实现方式: 索引数组 索引数组使用数字作为键名,默认从0开始递增。 $fruits = array("Apple…

php实现抽奖程序

php实现抽奖程序

PHP实现抽奖程序 基本抽奖逻辑 创建一个简单的抽奖程序需要定义奖品、中奖概率及随机选择逻辑。以下是一个基础实现示例: <?php // 奖品配置(奖品名称 => 概率) $prizes…

php redis 队列实现

php redis 队列实现

PHP Redis 队列实现 Redis 是一个高性能的键值存储系统,常被用作消息队列。以下是使用 PHP 和 Redis 实现队列的几种方法。 安装依赖 确保已安装 PHP Redis 扩展。可以…