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

相关文章

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 // 创建…

php 购物车实现

php 购物车实现

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

php实现下载

php实现下载

PHP实现文件下载 使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法: 方法一:直接输出文件内容 $file_path = 'path/t…

php 队列的实现

php 队列的实现

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

php mvc实现

php mvc实现

PHP MVC 实现步骤 模型(Model)层 模型负责数据处理和业务逻辑,通常与数据库交互。创建一个基类模型,其他具体模型继承它。 class Model { protected $db;…

php实现过程

php实现过程

PHP 实现过程 PHP 是一种广泛使用的服务器端脚本语言,特别适合 Web 开发。以下是 PHP 实现过程的关键步骤和注意事项。 安装与配置 下载并安装 PHP,可以从官方 PHP 网站获取最新…