onethink 密码加密方式详解

 1 /**
 2  * 系统非常规MD5加密方法
 3  * @param  string $str 要加密的字符串
 4  * @return string 
 5  */
 6 function think_ucenter_md5($str, $key = 'ThinkUCenter'){
 7     return '' === $str ? '' : md5(sha1($str) . $key);
 8 }
 9 
10 /**
11  * 系统加密方法
12  * @param string $data 要加密的字符串
13  * @param string $key  加密密钥
14  * @param int $expire  过期时间 (单位:秒)
15  * @return string 
16  */
17 function think_ucenter_encrypt($data, $key, $expire = 0) {
18     $key  = md5($key);
19     $data = base64_encode($data);
20     $x    = 0;
21     $len  = strlen($data);
22     $l    = strlen($key);
23     $char =  '';
24     for ($i = 0; $i < $len; $i++) {
25         if ($x == $l) $x=0;
26         $char  .= substr($key, $x, 1);
27         $x++;
28     }
29     $str = sprintf('%010d', $expire ? $expire + time() : 0);
30     for ($i = 0; $i < $len; $i++) {
31         $str .= chr(ord(substr($data,$i,1)) + (ord(substr($char,$i,1)))%256);
32     }
33     return str_replace('=', '', base64_encode($str));
34 }
原文地址:https://www.cnblogs.com/lovebing/p/6743546.html