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);
$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 返回结构化数组(含 ivciphertexttag),支持细粒度控制;调用 SG15::decrypt() 时会自动校验 tag,失败则抛出 SG15\Exception\AuthenticationException

结语

SG15 以简洁 API 和工业级加密标准,为 PHP 开发者提供了兼顾安全性与易用性的加密方案。它不依赖外部服务,无网络调用开销,适用于 Token 签名、配置加密、日志脱敏等场景。建议搭配 opcachephp.ini 中的 openssl.cipher_name = aes-256-gcm(若支持)进一步优化性能。

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

```