美文网首页
TP5.1写接口用来加密解密的方法

TP5.1写接口用来加密解密的方法

作者: 吴涛涛 | 来源:发表于2020-06-17 19:04 被阅读0次
//对uid进行加密
function think_encrypt($data, $key = '', $expire = 0) {
    $key  = md5(empty($key) ? Env::get('CRYPT_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));
}

//对uid解密
function think_decrypt($data, $key = ''){
    $key    = $key  = md5(empty($key) ? Env::get('CRYPT_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);
}

相关文章

  • TP5.1写接口用来加密解密的方法

  • 【iOS开发】常用加密算法(一)AES加密算法

    对称算法 采用单钥密码的加密方法,同一个密钥可以同时用来加密和解密,这种加密方法称为对称加密,也称为单密钥加密 常...

  • 加密解密

    1. 对称加密 采用单钥密码的加密方法,同一个密钥可以同时用来加密和解密,这种加密方法称为对称加密,也称为单密钥加...

  • 对称加密与非对称加密

    对称加密 1. 含义 client 用来加密的 password 和 server 用来解密的 password ...

  • python加密解密

    1. md5加密 方法一:使用Crypto 方法二:使用hashlib 2. AES加密解密 导入库 加密 解密

  • 登录密码校验

    RAS加密 生成公、私钥 公钥给前端,用来加密密码 私钥存储在服务端,用来解密密码 数据库加密存储 解密通过后,通...

  • RSA的简单理解

    加密和解密 通俗的讲,RSA的公钥和私钥都可以用来加密或解密--只要能保证用A加密,就用B解密就行。至于A是公钥还...

  • iOS AES加密

    导入头文件 加密方法: 解密方法:

  • 数字签名

    签名:用私钥加密 验证:用公钥解密 加密:用公钥加密 解密:用私钥解密 数字签名签名的数据 数字签名主要使用来做数...

  • crypto-js实现加密解密

    1、DES加密 2、DES解密 3、AES加密 4、AES解密 5、注意:js的前端加密不能与java加密代码写的...

网友评论

      本文标题:TP5.1写接口用来加密解密的方法

      本文链接:https://www.haomeiwen.com/subject/sqnsxktx.html