PHP 实现加强版加密解密类实例

Owen
Owen
发布时间:2026-10-13| 4人浏览过
原创

本文介绍了一个基于 PHP 的加强版加密解密类,该类结合了 MD5 哈希、异或运算和 Base64 编码技术,有效提升了字符串加密的安全性并解决了特殊字符兼容性问题。

核心功能与特性

该加密解密类主要解决以下安全问题:

  • 动态密钥生成:每次加密时随机生成密钥,增加破解难度。
  • 异或加密:通过异或运算混淆明文,防止直接识别。
  • Base64 编码与特殊字符处理:将密文转为 Base64 格式,并自定义替换 '=' 符号,确保数据在 URL 或数据库中的兼容性。

完整代码实现

以下是完整的 Ender 类代码,可直接复制到项目中作为基础工具使用:

<?php
class Ender{
  private $enkey;//加密解密用的密钥
  private $rep_char='#';//替换加密后的base64字符串中的=,因为=在有些场合是禁止使用的
  //构造参数是密钥
  public function __construct($key=''){
    if(!$key){
      $this->enkey=$key;
    }
  }
  //设置密钥
  public function set_key($key){
    $this->enkey=$key;
  }
  private function keyED($txt,$encrypt_key) 
  { 
    $encrypt_key = md5($encrypt_key); 
    $ctr=0; 
    $tmp = ""; 
    for ($i=0;$i<strlen($txt);$i++) 
    { 
      if ($ctr==strlen($encrypt_key)) $ctr=0; 
      $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1); 
      $ctr++; 
    } 
    return $tmp;
  }
  //加密字符串
  public function encrypt($txt,$key='') 
  {
    if(!$key){
      $key=$this->enkey;
    }
    srand((double)microtime()*1000000); 
    $encrypt_key = md5(rand(0,32000)); 
    $ctr=0; 
    $tmp = ""; 
    for ($i=0;$i<strlen($txt);$i++) 
    { 
      if ($ctr==strlen($encrypt_key)) $ctr=0; 
      $tmp.= substr($encrypt_key,$ctr,1) . 
      (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1)); 
      $ctr++;
    }
    $r=base64_encode($this->keyED($tmp,$key));
    $r=str_replace('=',$this->rep_char,$r);
    return $r; 
  }
  //解密字符串
  public function decrypt($txt,$key='') 
  {
    $txt=str_replace($this->rep_char,'=',$txt);
    $txt=base64_decode($txt);
    if(!$key){
        $key=$this->enkey;
    }
    $txt = $this->keyED($txt,$key); 
    $tmp = ""; 
    for ($i=0;$i<strlen($txt);$i++) 
    { 
      $md5 = substr($txt,$i,1); 
      $i++; 
      $tmp.= (substr($txt,$i,1) ^ $md5); 
    } 
    return $tmp; 
  }
}

使用方法与注意事项

第1步:初始化类

创建一个 Ender 实例,并传入一个固定的私钥($key)。这个密钥将用于后续的加解密过程,务必妥善保管。

第2步:执行加密

调用 encrypt() 方法,传入需要加密的明文字符串。可选地传入临时密钥,若未提供则使用构造函数中设定的默认密钥。

第3步:执行解密

调用 decrypt() 方法,传入加密后的密文字符串。同样支持使用默认密钥或指定临时密钥进行解密。

排错与风险提示

  • 密钥一致性:加密和解密必须使用完全相同的密钥。如果密钥不匹配,解密结果将是乱码或失败。
  • URL 安全性:由于代码中使用了 str_replace 将 '=' 替换为 '#',这使得密文更适合在 URL 参数中传递。如果不需要此特性,可调整 $rep_char 的设置或删除替换逻辑。
  • 数据安全:此算法属于应用层简易加密,适用于非敏感数据的混淆和保护。对于高度敏感的数据(如支付信息),建议使用更专业的加密库(如 OpenSSL)。

总结

以上就是PHP实现加强版加密解密类的详细内容,更多关于PHP加解密资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。