博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP加密解密函数之Base64
阅读量:4678 次
发布时间:2019-06-09

本文共 1767 字,大约阅读时间需要 5 分钟。

/** * Base64 加密实现类 */class Basecrypt {    /**     * 加密字符串     * @param string $str 字符串     * @param string $key 加密key     * @param integer $expire 有效期(秒)          * @return string     */    public static function encrypt($data,$key,$expire=0) {        $expire = sprintf('%010d', $expire ? $expire + time():0);        $key  = md5($key);        $data = base64_encode($expire.$data);        $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++) {            $str .= chr(ord(substr($data, $i, 1)) + (ord(substr($char, $i, 1)))%256);        }        return str_replace(array('+','/','='),array('-','_',''),base64_encode($str));    }    /**     * 解密字符串     * @param string $str 字符串     * @param string $key 加密key     * @return string     */    public static function 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);        $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))
0 && $expire < time()) { return ''; } $data = substr($data,10); return $data; }}

 

转载于:https://www.cnblogs.com/yudis/articles/6056986.html

你可能感兴趣的文章
0029 Java学习笔记-面向对象-枚举类
查看>>
CGRectGet *** 获取控件坐标的方法
查看>>
SQL的主键和外键约束
查看>>
Bookmarklet
查看>>
c++primer 第l六章编程练习答案
查看>>
上海秋季HCC小记
查看>>
Illustrator 上色
查看>>
truncate表恢复
查看>>
this关键字的使用
查看>>
Console.Read()、Console.ReadLine()、Console.ReadKey()
查看>>
ecere 编译过程中遇到的问题
查看>>
Cyclone V 与 Avalon-MM资料整理——DE1-SOC学习笔记(1)
查看>>
异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.
查看>>
Flask-SQLAlchemy
查看>>
C# - Generics
查看>>
.NET LINQ 转换数据类型
查看>>
[LGP2791] 幼儿园篮球题
查看>>
170. Two Sum III - Data structure design
查看>>
os & sys
查看>>
Shell 常用命令总结
查看>>