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);
$plaintext = "Hello, SG15! 这是一条敏感消息。";
// 加密
$encrypted = SG15::encrypt($plaintext, $key);
// 解密(自动验证完整性)
$decrypted = SG15::decrypt($encrypted, $key);
echo "原文:{$plaintext}\n";
echo "密文(base64):" . base64_encode($encrypted) . "\n";
echo "解密结果:{$decrypted}\n";
// 输出一致 → ✅ 认证加密成功
?>
3. 生产级密钥管理实践
避免硬编码密钥。推荐结合环境变量与派生密钥:
<?php
use SG15\SG15;
use SG15\KeyDerivation;
// 从环境变量读取主密码(如:APP_SECRET="my-super-secret-passphrase")
$masterPass = $_ENV['APP_SECRET'] ?? 'fallback-secret';
$salt = hex2bin('a1b2c3d4e5f67890'); // 生产中应持久化存储
// 派生 AES 密钥(PBKDF2-HMAC-SHA256, 100,000 轮)
$key = KeyDerivation::deriveKey($masterPass, $salt, 32, 100000);
$message = "用户ID:12345;订单号:ORD-2024-789";
$cipherText = SG15::encrypt($message, $key);
// 存储时可附加盐值与参数(JSON 封装便于扩展)
$payload = [
'iv' => base64_encode($cipherText['iv']),
'ciphertext' => base64_encode($cipherText['ciphertext']),
'tag' => base64_encode($cipherText['tag']),
'salt' => base64_encode($salt),
];
echo json_encode($payload, JSON_UNESCAPED_UNICODE);
?>
💡 提示:SG15 返回结构化数组(含
iv、ciphertext、tag),支持细粒度控制;调用 SG15::decrypt() 时会自动校验 tag,失败则抛出 SG15\Exception\AuthenticationException。
结语
SG15 以简洁 API 和工业级加密标准,为 PHP 开发者提供了兼顾安全性与易用性的加密方案。它不依赖外部服务,无网络调用开销,适用于 Token 签名、配置加密、日志脱敏等场景。建议搭配 opcache 与 php.ini 中的 openssl.cipher_name = aes-256-gcm(若支持)进一步优化性能。