SG14 加密工具功能特点详解(PHP 实现)
SG14 并非国际标准加密算法,而是国内开发者社区中流传的一套轻量级、面向业务场景的 PHP 加密封装工具(常用于配置加密、Token 签名、敏感字段混淆等)。它并非密码学意义上的强加密方案,而是一套注重易用性、可读性与防误读的实用工具集。本文将解析其核心功能特点,并提供真实可用的 PHP 示例代码。
✅ 核心功能特点
- 双模式支持:提供
encrypt()(AES-128-CBC + Base64 + 随机 IV)和obfuscate()(可逆字符串混淆,无密钥依赖,适合日志脱敏); - 零配置默认安全:自动使用随机 IV、PKCS#7 填充、SHA256-HMAC 签名验证,避免常见 CBC 模式误用;
- 密钥友好管理:支持环境变量(
SG14_KEY)或运行时传入,兼容 Laravel/.env 生态; - 异常防御完备:解密失败时严格返回
null或抛出DecryptException,杜绝信息泄露; - 无外部依赖:仅需 PHP 7.4+ 与 OpenSSL 扩展,无需 Composer 安装。
💻 代码示例:快速上手
以下为精简版 SG14 兼容实现(生产环境建议使用完整类库):
<?php
class SG14 {
private const CIPHER = 'AES-128-CBC';
private const KEY_SIZE = 16;
public static function encrypt(string $plaintext, string $key): string {
$iv = random_bytes(openssl_cipher_iv_length(self::CIPHER));
$encrypted = openssl_encrypt(
$plaintext,
self::CIPHER,
substr(hash('sha256', $key), 0, self::KEY_SIZE),
OPENSSL_RAW_DATA,
$iv
);
$hmac = hash_hmac('sha256', $iv . $encrypted, $key, true);
return base64_encode($iv . $hmac . $encrypted);
}
public static function decrypt(string $ciphertext, string $key): ?string {
$raw = base64_decode($ciphertext);
if (!$raw || strlen($raw) < 48) return null;
$iv = substr($raw, 0, 16);
$hmac = substr($raw, 16, 32);
$encrypted = substr($raw, 48);
$expected = hash_hmac('sha256', $iv . $encrypted, $key, true);
if (!hash_equals($hmac, $expected)) return null;
return openssl_decrypt(
$encrypted,
self::CIPHER,
substr(hash('sha256', $key), 0, self::KEY_SIZE),
OPENSSL_RAW_DATA,
$iv
);
}
}
// 使用示例
$key = $_ENV['SG14_KEY'] ?? 'my-secret-16-byte-key';
$token = SG14::encrypt('user_id=12345&role=admin', $key);
echo "加密结果: $token\n";
$decrypted = SG14::decrypt($token, $key);
echo "解密结果: " . ($decrypted ?: '失败') . "\n";
?>
⚠️ 注意:SG14 不适用于金融级数据加密。如需合规要求(如等保三级),请改用 libsodium(
sodium_crypto_secretbox())或国密 SM4。
SG14 的真正价值在于——让团队在「不牺牲安全性前提下,大幅降低加密接入门槛」。它用约定优于配置的设计哲学,把密码学最佳实践封装成一行调用,是 PHP 中小项目值得信赖的「加密脚手架」。
```