SG15加密工具使用指南

```html SG15加密工具使用指南|PHP开发实战

SG15加密工具使用指南(PHP 实战篇)

SG15 是一款轻量级、国产开源的对称加密工具库,专为 PHP 8.0+ 设计,采用 AES-256-GCM 模式实现高性能加解密,具备认证加密(AEAD)能力,可有效防止篡改与重放攻击。本文将带你快速上手 SG15 在 PHP 中的集成与使用。

1. 安装与环境准备

确保已安装 OpenSSL 扩展(PHP 默认启用),并通过 Composer 安装 SG15:

composer require sg15/sg15:dev-main

⚠️ 注意:SG15 当前处于活跃开发阶段(v0.3.x),请在生产环境使用前进行充分测试,并关注其 GitHub 仓库更新。

2. 基础用法示例

以下代码演示如何使用随机密钥加密敏感数据并安全解密:

<?php
require_once 'vendor/autoload.php';

use SG15\SG15;

// 生成 32 字节密钥(建议持久化存储,如配置文件或密钥管理服务)
$key = random_bytes(32);

// 初始化加密器
$sg15 = new SG15($key);

// 加密原始数据
$plaintext = "用户ID:U2024001|订单金额:¥299.99|时间:2024-06-15T10:30:00Z";
$ciphertext = $sg15->encrypt($plaintext);

echo "密文(Base64): " . base64_encode($ciphertext) . "\n";

// 解密验证
try {
    $decrypted = $sg15->decrypt($ciphertext);
    echo "解密成功 → " . $decrypted . "\n"; // 输出原始明文
} catch (Exception $e) {
    echo "解密失败: " . $e->getMessage() . "\n";
}
?>

3. 生产环境最佳实践

避免硬编码密钥,推荐使用环境变量 + 密钥派生:

<?php
use SG15\SG15;
use SG15\KeyDeriver;

// 从环境变量读取主密钥种子(如 .env 中定义 SG15_MASTER_KEY)
$masterKey = $_ENV['SG15_MASTER_KEY'] ?? 'your-secure-master-key-here';
$salt = hex2bin('a1b2c3d4e5f67890'); // 固定盐值(建议按业务场景分片)

$key = KeyDeriver::derive($masterKey, $salt, 32); // PBKDF2-HMAC-SHA256
$sg15 = new SG15($key);

// 加密后可附加时间戳与版本号便于后续演进
$payload = [
    'v' => '1.0',
    't' => time(),
    'data' => $sg15->encrypt($sensitiveData)
];
echo json_encode($payload);
?>
💡 提示:SG15 默认使用 12 字节随机 nonce(一次性数),每次加密结果唯一;解密时自动提取 nonce 与认证标签(tag),开发者无需手动管理——这正是 GCM 模式的核心优势。

结语

SG15 以简洁 API 和工业级加密标准,为 PHP 应用提供了开箱即用的数据保护能力。它适用于 Token 签名、API 参数加密、日志脱敏等典型场景。但请牢记:加密不能替代权限控制与安全设计。始终遵循最小权限原则,定期轮换密钥,并结合 HTTPS、输入校验等多层防护机制。

项目地址:https://github.com/sg15/sg15-php

```