「人生若只如初见」

「人生若只如初见」

正在加载诗词...

php实现的三个常用字符串加密解密功能函数案例

  • kevin 2026年04月07日 12阅读 0评论
  • 这篇文章主要介绍了php实现的三个常用加密解密功能函数,涉及php针对字符串的遍历、截取、编码转换等相关操作技巧,需要的朋友可以参考下

    //加密函数
    function lock_url($txt,$key='www.ilingku.com')
    {
      $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";
      $nh = rand(0,64);
      $ch = $chars[$nh];
      $mdKey = md5($key.$ch);
      $mdKey = substr($mdKey,$nh%8, $nh%8+7);
      $txt = base64_encode($txt);
      $tmp = '';
      $i=0;$j=0;$k = 0;
      for ($i=0; $i<strlen($txt); $i++) {
        $k = $k == strlen($mdKey) ? 0 : $k;
        $j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64;
        $tmp .= $chars[$j];
      }
      return urlencode($ch.$tmp);
    }
    //解密函数
    function unlock_url($txt,$key='www.ilingku.com')
    {
      $txt = urldecode($txt);
      $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";
      $ch = $txt[0];
      $nh = strpos($chars,$ch);
      $mdKey = md5($key.$ch);
      $mdKey = substr($mdKey,$nh%8, $nh%8+7);
      $txt = substr($txt,1);
      $tmp = '';
      $i=0;$j=0; $k = 0;
      for ($i=0; $i<strlen($txt); $i++) {
        $k = $k == strlen($mdKey) ? 0 : $k;
        $j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]);
        while ($j<0) $j+=64;
        $tmp .= $chars[$j];
      }
      return base64_decode($tmp);
    }
    

    用法:

    算法二:

    <?php
    function passport_encrypt($txt, $key = 'www.ilingku.com') 
    { 
      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 urlencode(base64_encode(passport_key($tmp, $key))); 
    } 
    function passport_decrypt($txt, $key = 'www.ilingku.com') 
    { 
      $txt = passport_key(base64_decode(urldecode($txt)), $key); 
      $tmp = ''; 
      for($i = 0;$i < strlen($txt); $i++) { 
      $md5 = $txt[$i]; 
      $tmp .= $txt[++$i] ^ $md5; 
      } 
      return $tmp; 
    } 
    function passport_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; 
    } 
    ?>

    用法:

    <?php
    $txt = "1";
    $key = "testkey";
    $encrypt = passport_encrypt($txt,$key);
    $decrypt = passport_decrypt($encrypt,$key);
    echo $encrypt."<br>";
    echo $decrypt."<br>";
    ?>

    算法三(改进第一个加密之后的算法)

    //加密函数
    function lock_url($txt,$key='www.ilingku.com')
    {
      $txt = $txt.$key;
      $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";
      $nh = rand(0,64);
      $ch = $chars[$nh];
      $mdKey = md5($key.$ch);
      $mdKey = substr($mdKey,$nh%8, $nh%8+7);
      $txt = base64_encode($txt);
      $tmp = '';
      $i=0;$j=0;$k = 0;
      for ($i=0; $i<strlen($txt); $i++) {
        $k = $k == strlen($mdKey) ? 0 : $k;
        $j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64;
        $tmp .= $chars[$j];
      }
      return urlencode(base64_encode($ch.$tmp));
    }
    //解密函数
    function unlock_url($txt,$key='www.ilingku.com')
    {
      $txt = base64_decode(urldecode($txt));
      $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";
      $ch = $txt[0];
      $nh = strpos($chars,$ch);
      $mdKey = md5($key.$ch);
      $mdKey = substr($mdKey,$nh%8, $nh%8+7);
      $txt = substr($txt,1);
      $tmp = '';
      $i=0;$j=0; $k = 0;
      for ($i=0; $i<strlen($txt); $i++) {
        $k = $k == strlen($mdKey) ? 0 : $k;
        $j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]);
        while ($j<0) $j+=64;
        $tmp .= $chars[$j];
      }
      return trim(base64_decode($tmp),$key);
    }

    用法

    0
    打赏

    —— 评论区 ——

    请登录后发表评论
    立即登录 用户注册
    LOGIN