PHP实现简单字符加密解密类:原理与示例

Mia
Mia
发布时间:2026-10-14 | 5人浏览过
原创

在PHP开发中,对敏感字符串进行简单的加密解密操作常用于防止明文暴露。本文将展示一个轻量级的加密解密类实现,利用异或运算、随机数及Base64编码技术,提供一套开箱即用的解决方案。

加密解密核心逻辑

该类的设计核心在于结合了动态生成的临时密钥与固定的主密钥,通过字节异或运算打乱原文,最终使用Base64格式输出以确保数据传输的安全性与兼容性。

  • 加密过程:生成随机MD5密钥,原文与该密钥逐字异或,再结合固定主密钥二次混淆,最后进行Base64编码。
  • 解密过程:先进行Base64解码,利用主密钥还原中间状态,再利用相同的随机逻辑逆向异或获取原文。

代码实现细节

以下是完整的 SysCrypt 类定义,包含加密 encrypt、解密 decrypt 及底层辅助方法 __key。

class SysCrypt{
  private $crypt_key='your_secret_key';//替换为你的固定密钥
  
  public function __construct($crypt_key){
    $this->crypt_key=$crypt_key;
  }
  
  public function encrypt($txt){
    // 生成随机密钥种子
    srand((double)microtime()*1000000);
    $encrypt_key=md5(rand(0,32000));
    $ctr=0;
    $tmp='';
    // 第一次异或混合
    for($i=0;$i<strlen($txt);$i++){
      $ctr=$ctr==strlen($encrypt_key)?0:$ctr;
      $tmp.=$encrypt_key[$ctr].($txt[$i]^$encrypt_key[$ctr++]);
    }
    // 结合固定密钥二次处理并编码
    return base64_encode(self::__key($tmp,$this->crypt_key));
  }
  
  public function decrypt($txt){
    // 反向解密密钥混合
    $txt=self::__key(base64_decode($txt),$this->crypt_key);
    $tmp='';
    for($i=0;$i<strlen($txt);$i++){
      $md5=$txt[$i];
      // 逆向异或还原原文
      $tmp.=$txt[++$i]^$md5;
    }
    return $tmp;
  }
  
  // 底层密钥混淆算法
  private function __key($txt,$encrypt_key){
    $encrypt_key=md5($encrypt_key);
    $ctr=0;
    $tmp='';
    for($i=0;$i<strlen($txt);$i++){
      $ctr=$ctr==strlen($encrypt_key)?0:$ctr;
      $tmp.=$txt[$i]^$encrypt_key[$ctr++];
    }
    return $tmp;
  }
  
  public function __destruct(){
    $this->crypt_key=NULL;
  }
}

实际应用场景示例

在实际使用中,建议将 $crypt_key 设置为一个只有服务器知道的复杂字符串,避免硬编码在公开代码中。以下示例演示如何对一封电子邮件地址进行加密并在需要时解密。

$sc=new SysCrypt('my_super_secret_key');
$text='user@example.com';

// 执行加密
$encrypted_text=$sc->encrypt($text);
echo '原文:'.$text.PHP_EOL;
echo '密文:'.$encrypted_text.PHP_EOL;

// 执行解密
echo '解密:'.$sc->decrypt($encrypted_text);

预期输出效果:

  • 原文:user@example.com
  • 密文:一串类似 Ty8...= 的Base64字符串
  • 解密:user@example.com(恢复为原始内容)

注意:此算法适用于简单的数据混淆场景。对于涉及高安全性要求的密码存储或金融数据传输,请务必使用行业标准的AES、RSA等加密库或哈希算法,并遵循相应的安全规范。

以上就是PHP实现简单字符加密解密类的详细内容,更多关于PHP数据安全开发的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表