加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP自定义加密函数有哪些,你了解几种?

发布时间:2021-12-23 12:52:19 所属栏目:PHP教程 来源:互联网
导读:PHP自定义加密函数有哪些?在做项目的时候,我们可能会需要使用到加密函数,接下来小编就给大家分享一些PHP自定义加密函数,都是比较实用的,希望大家阅读完这篇文章能有收获,感兴趣的朋友就继续往下看吧。 项目中有时我们需要使用PHP将特定的信息进行加密,
   PHP自定义加密函数有哪些?在做项目的时候,我们可能会需要使用到加密函数,接下来小编就给大家分享一些PHP自定义加密函数,都是比较实用的,希望大家阅读完这篇文章能有收获,感兴趣的朋友就继续往下看吧。
 
      项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这些加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理。最常见的应用在用户登录以及一些API数据交换的场景。最常见的应用在用户登录以及一些API数据交换的场景。加密解密原理一般都是通过一定的加密解密算法,将密钥加入到算法中,最终得到加密解密结果。
 
      u=3837593897,2803417633&fm=26&gp=0.jpg
 
      废话不多说,直接上代码。
 
      一、第一种针对于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++]))%64;
  $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;

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读