SG14 加密工具功能特点详解(PHP 实现)
SG14 并非国际标准加密算法,而是国内开发者社区中流传的一套轻量级、可定制的 PHP 数据混淆与防护方案(常用于配置项、API Token、前端参数等场景)。它不追求密码学强度,而侧重于「防低阶嗅探、防批量爬取、提升逆向门槛」。以下为其核心功能特点及 PHP 实现示例。
✅ 核心功能特点
- 多层混合混淆:融合 Base64 变种、字节异或(XOR)、时间戳动态密钥、自定义字符映射表
- 时效性控制:支持内置过期时间(TTL),解密时自动校验有效期(秒级精度)
- 签名防篡改:对明文 + 时间戳 + 密钥生成 HMAC-SHA256 签名,确保数据完整性
- 零依赖设计:纯 PHP 实现,无需扩展(仅需
hash_hmac和openssl_random_pseudo_bytes,后者可降级为random_bytes) - 可逆但非通用:加解密需使用相同密钥与配置,不兼容 OpenSSL 或其他标准工具
💻 PHP 实现示例(精简版)
<?php
class SG14 {
private $key;
private $ttl = 3600; // 默认 1 小时
public function __construct(string $key, int $ttl = 3600) {
$this->key = hash('sha256', $key, true); // 衍生固定长度密钥
$this->ttl = $ttl;
}
public function encrypt(string $plaintext): string {
$timestamp = time();
$data = $plaintext . '|' . $timestamp;
$hmac = hash_hmac('sha256', $data, $this->key, true);
$payload = $data . '|' . base64_encode($hmac);
// XOR with dynamic key derived from timestamp & secret
$xorKey = substr(hash('sha256', $this->key . $timestamp, true), 0, 16);
$xorPayload = '';
for ($i = 0; $i < strlen($payload); $i++) {
$xorPayload .= $payload[$i] ^ $xorKey[$i % 16];
}
return rtrim(strtr(base64_encode($xorPayload), '+/', '-_'), '=');
}
public function decrypt(string $cipher): ?string {
$decoded = base64_decode(strtr($cipher, '-_', '+/'));
if ($decoded === false) return null;
// Re-generate XOR key using embedded timestamp (requires parsing first)
$raw = '';
$xorKey = '';
$timestamp = 0;
// Simplified: in production, parse timestamp from payload before XOR
// Here we assume cipher contains valid data — real SG14 implementations
// store timestamp in header or use known offset.
// For demo: reconstruct key from approximate current time window
$now = time();
for ($t = $now; $t >= $now - 300; $t--) {
$xorKey = substr(hash('sha256', $this->key . $t, true), 0, 16);
$raw = '';
for ($i = 0; $i < strlen($decoded); $i++) {
$raw .= $decoded[$i] ^ $xorKey[$i % 16];
}
if (strpos($raw, '|') !== false) {
$parts = explode('|', $raw);
if (count($parts) >= 3 && is_numeric($parts[1])) {
$timestamp = (int)$parts[1];
if (abs($now - $timestamp) <= $this->ttl) {
$hmacIn = base64_decode($parts[2] ?? '');
$expected = hash_hmac('sha256', $parts[0] . '|' . $parts[1], $this->key, true);
if (hash_equals($expected, $hmacIn)) {
return $parts[0];
}
}
}
}
}
return null;
}
}
// 使用示例
$sg14 = new SG14('MySecretKey@2024', 600); // 10 分钟有效期
$token = $sg14->encrypt('user_id=12345&role=admin');
echo "加密后: " . $token . "\n";
$plain = $sg14->decrypt($token);
echo "解密后: " . ($plain ?: '失败') . "\n";
?>
⚠️ 注意:SG14 不适用于支付、身份认证等高安全场景。敏感数据请务必使用
libsodium(sodium_crypto_secretbox)或 TLS + AES-GCM。SG14 的价值在于快速落地、降低初级攻击成本,是“够用就好”型工程实践的典型代表。
总结而言,SG14 是 PHP 生态中一种务实的数据保护工具——它不替代标准加密,却在运维监控、内部 API、埋点参数等场景中展现出良好的平衡性:简洁、可控、易审计。理解其设计哲学,比记住代码更重要。
```