onethink的对称加解密类
- <?php
- /**
- * @descript: 对称加解密类
- * @source: onthink
- */
-
- class Encrypt{
- /**
- * 系统加密方法
- * @param string $data 要加密的字符串
- * @param string $key 加密密钥
- * @param int $expire 过期时间 单位 秒
- * @return string
- */
- public static function think_encrypt($data, $key = '', $expire = 0) {
- // $key = md5(empty($key) ? C('DATA_AUTH_KEY') : $key);
- $key = md5($key) ;
- $data = base64_encode($data);
- $x = 0;
- $len = strlen($data);
- $l = strlen($key);
- $char = '';
-
- for ($i = 0; $i < $len; $i++) {
- if ($x == $l) $x = 0;
- $char .= substr($key, $x, 1);
- $x++;
- }
-
- $str = sprintf('%010d', $expire ? $expire + time():0);
-
- for ($i = 0; $i < $len; $i++) {
- $str .= chr(ord(substr($data, $i, 1)) + (ord(substr($char, $i, 1)))%256);
- }
- return str_replace(array('+','/','='),array('-','_',''),base64_encode($str));
- }
-
- /**
- * 系统解密方法
- * @param string $data 要解密的字符串 (必须是think_encrypt方法加密的字符串)
- * @param string $key 加密密钥
- * @return string
- */
- public static function think_decrypt($data, $key = ''){
- $key = md5($key);
- $data = str_replace(array('-','_'),array('+','/'),$data);
- $mod4 = strlen($data) % 4;
- if ($mod4) {
- $data .= substr('====', $mod4);
- }
- $data = base64_decode($data);
- $expire = substr($data,0,10);
- $data = substr($data,10);
-
- if($expire > 0 && $expire < time()) {
- return '';
- }
- $x = 0;
- $len = strlen($data);
- $l = strlen($key);
- $char = $str = '';
-
- 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 base64_decode($str);
- }
- }
- ?>
解压密码: detechn或detechn.com
免责声明
本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。
本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。