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、输入校验等多层防护机制。
```