zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    nginx配置
    线程与进程的区别:
    java面试题1
    递归的定义和优缺点
    使用jedis连接redis可能会出现的问题及解决方案
    Linux上安装Redis
    Linux 权限管理
    Maven
    网址备份
    反射
  • 原文地址:https://www.cnblogs.com/lovebing/p/6743546.html
Copyright © 2011-2022 走看看