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 仓库:github.com/sg15/sg15-php

2. 基础用法示例

以下代码演示如何使用随机密钥加密敏感数据,并安全导出密文与初始化向量(IV):

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

use SG15\SG15;

// 生成 32 字节主密钥(生产环境请使用安全随机源,如 sodium_crypto_secretbox_keygen())
$masterKey = random_bytes(32);

// 实例化加密器(自动选择 AES-256-GCM + HKDF 密钥派生)
$sg = new SG15($masterKey);

// 加密字符串(返回关联数组:['ciphertext', 'iv', 'tag', 'salt'])
$encrypted = $sg->encrypt("用户支付金额:¥299.00 | 订单ID: ORD-2024-7890");

echo "密文(Base64):" . base64_encode($encrypted['ciphertext']) . "\n";
echo "认证标签(Tag):" . bin2hex($encrypted['tag']) . "\n";

// 解密验证
try {
    $decrypted = $sg->decrypt($encrypted);
    echo "解密结果:" . $decrypted; // 输出原始明文
} catch (Exception $e) {
    echo "解密失败:{$e->getMessage()}";
}
?>

3. 生产环境最佳实践

💡 提示:切勿硬编码密钥!推荐使用环境变量 + 密钥管理系统(如 HashiCorp Vault 或 AWS KMS)动态加载主密钥。

示例:从环境变量读取密钥并启用自动盐值管理:

$keyFromEnv = $_ENV['SG15_MASTER_KEY'] ?? '';
if (empty($keyFromEnv)) {
    throw new RuntimeException('SG15_MASTER_KEY 未配置');
}
$sg = new SG15(hex2bin($keyFromEnv), [
    'auto_salt' => true,   // 自动为每次加密生成唯一 salt(增强抗彩虹表能力)
    'ttl'       => 3600,   // 可选:设置密文有效期(秒),decrypt 时自动校验时间戳
]);

4. 与其他系统的互操作性

SG15 兼容标准 AES-GCM 格式,输出结构符合 RFC 5116。若需与 Node.js 或 Python(PyCryptodome)互通,只需确保:

  • 使用相同密钥、IV 长度(12 字节)、认证标签长度(16 字节)
  • 明文编码统一为 UTF-8
  • 盐值(salt)和附加认证数据(AAD)字段保持一致

SG15 是注重安全与易用性的现代 PHP 加密方案。它不替代 OpenSSL 扩展,而是以更高层 API 封装最佳实践,助你规避常见陷阱——如 ECB 模式误用、IV 重用、缺少完整性校验等。

🔐 安全无小事,加密有规范。从今天起,让 SG15 成为你 PHP 应用的数据守门人。

```