教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 四种好用的PHP自定义加密函数(可逆/不可逆)

四种好用的PHP自定义加密函数(可逆/不可逆)

发布时间:2020-10-14   编辑:jiaochengji.com
教程集为您提供四种好用的PHP自定义加密函数(可逆/不可逆)等资源,欢迎您收藏本站,我们将为您提供最新的四种好用的PHP自定义加密函数(可逆/不可逆)资源
项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这些加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理。

最常见的应用在用户登录以及一些API数据交换的场景。最常见的应用在用户登录以及一些API数据交换的场景。加密解密原理一般都是通过一定的加密解密算法,将密钥加入到算法中,最终得到加密解密结果。

废话不多说,直接上代码。

一、第一种针对于ID的可逆加密函数,也可以用作于邀请码之类的,解密后的数据比较简单

示例:lockcode(28)=》000X unlockcode('000X')=》28

//加密函数 function lockcode($code) {     static $source_string = 'E5FCDG3HQA4B1NOPIJ2RSTUV67MWX89KLYZ';     $num = $code;     $code = '';     while ( $num > 0) {         $mod = $num % 35;         $num = ($num - $mod) / 35;         $code = $source_string[$mod].$code;     }     if(empty($code[3]))         $code = str_pad($code,4,'0',STR_PAD_LEFT);     return $code; } //解密函数 function unlockcode($code) {     static $source_string = 'E5FCDG3HQA4B1NOPIJ2RSTUV67MWX89KLYZ';     if (strrpos($code, '0') !== false)         $code = substr($code, strrpos($code, '0') 1);     $len = strlen($code);     $code = strrev($code);     $num = 0;     for ($i=0; $i < $len; $i  ) {         $num  = strpos($source_string, $code[$i]) * pow(35, $i);     }     return $num; }

二、第二种是加密函数是我在网上搜索来的,很好用,可逆加密,支持盐值参数

示例:

encrypt('abcd','1234')=》nkiV93IfJ decrypt('nkiV93IfJ','1234')=》abcd

//加密函数   function encrypt($data,$key='CHENI'){       $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";       $nh = rand(0,64);       $ch = $chars[$nh];       $mdKey = md5($key.$ch);       $mdKey = substr($mdKey,$nh%8, $nh%8 7);       $data= base64_encode($data);       $tmp = '';       $i=0;$j=0;$k = 0;       for ($i=0; $i<strlen($data); $i  ) {           $k = $k == strlen($mdKey) ? 0 : $k;           $j = ($nh strpos($chars,$data[$i]) ord($mdKey[$k  ]))d;           $tmp .= $chars[$j];       }       return urlencode($ch.$tmp);   } //解密函数   function decrypt($data,$key='CHENI'){     $txt = urldecode($data);       $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);   }

三、第三种跟上面的比较类似,也支持盐值参数

示例:encrypt('abcd','1234')=》mZPHxw== decrypt('mZPHxw==','1234')=》abcd

function encrypt($data, $key)  {       $char="";     $str="";     $key    =   md5($key);       $x      =   0;       $len    =   strlen($data);       $l      =   strlen($key);       for ($i = 0; $i < $len; $i  ) {           if ($x == $l) { $x = 0; }           $char .= $key{$x};           $x  ;       }       for ($i = 0; $i < $len; $i  ){           $str .= chr(ord($data{$i})   (ord($char{$i})) % 256);       }       return base64_encode($str);   }   function decrypt($data, $key) {       $key = md5($key);       $x = 0;       $data = base64_decode($data);       $len = strlen($data);       $l = strlen($key);       for ($i = 0; $i < $len; $i  ) {           if ($x == $l){ $x = 0;}           $char .= substr($key, $x, 1);           $x  ;       }       for ($i = 0; $i < $len; $i  ){           if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))){               $str .= chr((ord(substr($data, $i, 1))   256) - ord(substr($char, $i, 1)));           }else{               $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));           }       }       return $str;   }

四、这个是我用过最好用的一个了,discuz中使用的加密解密算法

//加密算法     function authcode($string,$key='',$operation=false,$expiry=0){         $ckey_length = 4;         $key = md5($key ? $key : DEFAULT_KEYS);         $keya = md5(substr($key, 0, 16));         $keyb = md5(substr($key, 16, 16));         $keyc = $ckey_length ? ($operation? substr($string, 0, $ckey_length):substr(md5(microtime()), -$ckey_length)) : '';         $cryptkey = $keya.md5($keya.$keyc);         $key_length = strlen($cryptkey);         $string = $operation? base64_decode(substr($string, $ckey_length)) :         sprintf('0d', $expiry ? $expiry   time() : 0).substr(md5($string.$keyb), 0, 16).$string;         $string_length = strlen($string);         $result = '';         $box = range(0, 255);         $rndkey = array();         for($i = 0; $i <= 255; $i  ) {             $rndkey[$i] = ord($cryptkey[$i % $key_length]);         }         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($operation) {             if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) &&                 substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {                 return substr($result, 26);             } else {                 return '';             }         } else {             return $keyc.str_replace('=', '', base64_encode($result));         }     }     echo authcode('123456','key');     echo '<br>';     echo authcode('7d49kn9k07uSBZvha8as /qm4UoLfpy88PFg12glPeDtlzc','key',true);

更多PHP相关知识,请访问PHP教程!

以上就是四种好用的PHP自定义加密函数(可逆/不可逆)的详细内容,更多请关注教程集其它相关文章!

  • 本文转载于:csdn,如有侵犯,请联系jquerycn@qq.com删除
  • 您可能感兴趣的文章:
    四种好用的PHP自定义加密函数(可逆/不可逆)
    php base64加密解密的实现代码
    【哈希密码】PHP比md5更安全的加密方式
    UCenter的可逆加密函数authcode
    php加密函数md5,crypt,base64_encode的用法介绍
    php怎么保持用户登录状态
    逆战游戏卡如何设置 逆战游戏卡问题分析
    php可逆加密函数代码一例
    c#编写可逆加密类(3DES加密)的教程
    php怎么给密码进行md5加密

    [关闭]
    ~ ~