经典PHP加密解密函数Authcode()分享

php中文网
发布: 2016-06-20 13:03:19
原创
1613人浏览过

authcode这个函数很多人都使用,这函数来自discuz程序,用于加密解密字符串,可以设置钥匙(key)和过期时间,在很多时候都用得着。原版的函数代码可能会生成+、/、&这样的字符,导致通过url传值取回时被转义,导致无法解密。稍加修改,把这几个字符替换成其它字符,解密时再替换回去,这样就完美了!

代码如下:

function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0){ 
   
 if($operation == 'DECODE') { 
 $string = str_replace('[a]','+',$string); 
 $string = str_replace('[b]','&',$string); 
 $string = str_replace('[c]','/',$string); 
 } 
 $ckey_length = 4; 
 $key = md5($key ? $key : 'livcmsencryption '); 
 $keya = md5(substr($key, 0, 16)); 
 $keyb = md5(substr($key, 16, 16)); 
 $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''; 
 $cryptkey = $keya.md5($keya.$keyc); 
 $key_length = strlen($cryptkey); 
 $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $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 == 'DECODE') { 
  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 { 
 $ustr = $keyc.str_replace('=', '', base64_encode($result)); 
 $ustr = str_replace('+','[a]',$ustr); 
 $ustr = str_replace('&','[b]',$ustr); 
 $ustr = str_replace('/','[c]',$ustr); 
  return $ustr; 
 } 
} 
登录后复制

 

讯飞智作-讯飞配音
讯飞智作-讯飞配音

讯飞智作是一款集AI配音、虚拟人视频生成、PPT生成视频、虚拟人定制等多功能的AI音视频生产平台。已广泛应用于媒体、教育、短视频等领域。

讯飞智作-讯飞配音 67
查看详情 讯飞智作-讯飞配音


相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号