zoukankan      html  css  js  c++  java
  • PHP加密解密函数

      $str = "测试加密解密";
      $key = '^&yang*%#2014!$';
      $new_str = my_encrypt($str, $key );
      echo '原始:'.$str.'<br />'; 
      echo '加密:'.$new_str.'<br />';
      echo '解密:'.my_decrypt($new_str, $key);
    
      
      function my_encrypt($string,    $key='')
      {
          $key = md5($key);
          $key_length = strlen($key);
          $string = substr(md5($string.$key),0,8).$string;
          $string_length = strlen($string);
          $rndkey = $box = array();
          $result = '';
          for($i=0; $i<=255; $i++)
          {
              $rndkey[$i] = ord($key[$i%$key_length]);
              $box[$i] = $i;
          }
    
          for($j=$i=0; $i<256; $i++)
          {
              $j = ($j+$box[$i]+$rndkey[$i])%256;
              $tmp = $box[$i];
              $box[$i] = $box[$j];
              $box[$j] = $tmp;
          }
    
          for($a=$j=$i=0; $i<$string_length; $i++)
          {
              $a = ($a+1)%256;
              $j = ($j+$box[$a])%256;
              $tmp = $box[$a];
              $box[$a] = $box[$j];
              $box[$j] = $tmp;
              $result .= chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));
          }
          
          return str_replace('=','',base64_encode($result));     
     }
    
    
     function my_decrypt($string, $key='')
      {
          $key = md5($key);
          $key_length = strlen($key);
          $string = base64_decode($string);
          $string_length = strlen($string);
          $rndkey = $box = array();
          $result = '';
          for($i=0; $i<=255; $i++)
          {
              $rndkey[$i] = ord($key[$i%$key_length]);
              $box[$i] = $i;
          }
    
          for($j=$i=0; $i<256; $i++)
          {
              $j = ($j+$box[$i]+$rndkey[$i])%256;
              $tmp = $box[$i];
              $box[$i] = $box[$j];
              $box[$j] = $tmp;
          }
    
          for($a=$j=$i=0; $i<$string_length; $i++)
          {
              $a = ($a+1)%256;
              $j = ($j+$box[$a])%256;
              $tmp = $box[$a];
              $box[$a] = $box[$j];
              $box[$j] = $tmp;
              $result .= chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));
          }
    
          
          if(substr($result,0,8) == substr(md5(substr($result,8).$key),0,8))
          {
              return substr($result,8);
          }
          else
          {
              return'';
          } 
     }

    输出结果:

    原始:测试加密解密
    加密:LoRkIdfstzF0b4MsFHoYQso2MJNIPT7UPB8
    解密:测试加密解密

  • 相关阅读:
    Python 企业面试题集锦之Python基础
    Jmeter 线程之间传递参数
    Jmeter 5.1参数化csv引入文件
    Jmeter 5.1命令行执行bat文件
    Idea JAVA項目的导入JAR包和导出jar包
    charles 设置弱网测试
    Jmeter_Beanshell 返回值中提取参数值
    在Notepad++里配置python环境
    python json格式参数遍历所有key、value 及替换key对于的value
    python 使用yaml模块
  • 原文地址:https://www.cnblogs.com/whoamme/p/4074159.html
Copyright © 2011-2022 走看看