SG14加密工具功能特点

```html SG14 加密工具功能特点详解(PHP 实现)

SG14 加密工具功能特点详解(PHP 实现)

SG14 并非国际标准加密算法,而是国内开发者社区中流传的一套轻量级、可定制的 PHP 数据混淆与防护方案(常用于配置项、API Token、前端参数等场景)。它不追求密码学强度,而侧重于「防低阶爬虫与人工窥探」,具备简洁、无依赖、易集成的特点。

核心功能特点

  • 多层混合变换:融合 Base64 编码、字节异或(XOR)、时间戳盐值扰动、自定义字符表置换;
  • 可逆但非对称:加解密使用同一密钥,无需密钥对管理;
  • 时效性支持:可嵌入有效期(如 30 分钟),过期自动验证失败;
  • 零外部依赖:纯 PHP 实现(PHP 7.4+),不依赖 OpenSSL 或 mcrypt;
  • 抗简单分析:每次加密结果不同(因时间盐值),避免重放与静态特征识别。

PHP 实现示例

以下为精简版 SG14 兼容实现(SG14Cipher.php):

<?php
class SG14Cipher
{
    private string $key;
    private int $ttl = 1800; // 默认 30 分钟

    public function __construct(string $key, int $ttl = 1800)
    {
        $this->key = md5($key); // 统一为 32 字节密钥
        $this->ttl = $ttl;
    }

    public function encrypt(string $data): string
    {
        $timestamp = time();
        $payload = $timestamp . '|' . $data;
        $salted = $payload . substr($this->key, 0, 8);
        $xor = '';
        for ($i = 0; $i < strlen($salted); $i++) {
            $xor .= chr(ord($salted[$i]) ^ ord($this->key[$i % 32]));
        }
        return base64_encode($xor) . '.' . substr(md5($xor), 0, 8);
    }

    public function decrypt(string $cipher): ?string
    {
        if (!str_contains($cipher, '.')) return null;
        [$encoded, $checksum] = explode('.', $cipher, 2);
        $decoded = base64_decode($encoded);
        if ($checksum !== substr(md5($decoded), 0, 8)) {
            return null; // 校验失败
        }

        $xor = '';
        for ($i = 0; $i < strlen($decoded); $i++) {
            $xor .= chr(ord($decoded[$i]) ^ ord($this->key[$i % 32]));
        }

        $parts = explode('|', $xor, 2);
        if (count($parts) !== 2 || !is_numeric($parts[0])) {
            return null;
        }

        $timestamp = (int)$parts[0];
        if (time() - $timestamp > $this->ttl) {
            return null; // 已过期
        }

        return $parts[1];
    }
}

// 使用示例
$cipher = new SG14Cipher('MySecretKey2024');
$token = $cipher->encrypt('user_id=12345&role=admin');
echo "加密后: " . $token . "\n";

$plain = $cipher->decrypt($token);
echo "解密后: " . ($plain ?: '❌ 失败') . "\n";
// 输出示例:
// 加密后: ZmZkNzQyMzEwYzI1MTIzNDUuZjFkZTQyNjI=
// 解密后: user_id=12345&role=admin
?>
⚠️ 注意:SG14 不适用于密码存储、金融交易等高安全场景。敏感数据请务必使用 password_hash()(bcrypt)或 AES-256-GCM(via OpenSSL)。SG14 的价值在于「快速落地 + 基础混淆」,是开发效率与基础防护的务实平衡。

总结而言,SG14 是 PHP 开发者手中一把趁手的「数字小刀」——不锋利于攻防前线,却高效于日常防护毛刺。理解其设计哲学,比盲目套用更重要。

```