php实现cookie加密的方法


Posted in PHP onMarch 10, 2015

本文实例讲述了php实现cookie加密的方法。分享给大家供大家参考。具体实现方法如下:

<?php

class Cookie

{

    /**

     * 解密已经加密了的cookie

     * 

     * @param string $encryptedText

     * @return string

     */

    private static function _decrypt($encryptedText)

    {

        $key = Config::get('secret_key');

        $cryptText = base64_decode($encryptedText);

        $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);

        $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);

        $decryptText = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $cryptText, MCRYPT_MODE_ECB, $iv);

        return trim($decryptText);

    }

    /**

     * 加密cookie

     *

     * @param string $plainText

     * @return string

     */

    private static function _encrypt($plainText)

    {

        $key = Config::get('secret_key');

        $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);

        $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);

        $encryptText = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $plainText, MCRYPT_MODE_ECB, $iv);

        return trim(base64_encode($encryptText));

    }

    /**

     * 删除cookie

     * 

     * @param array $args

     * @return boolean

     */

    public static function del($args)

    {

        $name = $args['name'];

        $domain = isset($args['domain']) ? $args['domain'] : null;

        return isset($_COOKIE[$name]) ? setcookie($name, '', time() - 86400, '/', $domain) : true;

    }

    /**

     * 得到指定cookie的值

     * 

     * @param string $name

     */

    public static function get($name)

    {

        return isset($_COOKIE[$name]) ? self::_decrypt($_COOKIE[$name]) : null;

    }

    /**

     * 设置cookie

     *

     * @param array $args

     * @return boolean

     */

    public static function set($args)

    {

        $name = $args['name'];

        $value= self::_encrypt($args['value']);

        $expire = isset($args['expire']) ? $args['expire'] : null;

        $path = isset($args['path']) ? $args['path'] : '/';

        $domain = isset($args['domain']) ? $args['domain'] : null;

        $secure = isset($args['secure']) ? $args['secure'] : 0;

        return setcookie($name, $value, $expire, $path, $domain, $secure);

    }

}

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php记录代码执行时间(实现代码)
Jul 05 PHP
php中require和require_once的区别说明
Feb 27 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 PHP
PHP实现搜索相似图片
Sep 22 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
PHP 搜索查询功能实现
Nov 29 PHP
thinkPHP框架RBAC实现原理分析
Feb 01 PHP
PHP中“=&gt;
Mar 01 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
Oct 23 PHP
PHP中关于php.ini参数优化详解
Feb 28 PHP
PHP底层运行机制与工作原理详解
Jul 31 PHP
关于PHP数组迭代器的使用方法实例
Nov 17 PHP
php遍历目录方法小结
Mar 10 #PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
Mar 10 #PHP
PHP实现扎金花游戏之大小比赛的方法
Mar 10 #PHP
php获取本周开始日期和结束日期的方法
Mar 09 #PHP
php数组转成json格式的方法
Mar 09 #PHP
php实现将数组转换为XML的方法
Mar 09 #PHP
php返回字符串中所有单词的方法
Mar 09 #PHP
You might like
PHP 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
简单谈谈require模块化jquery和angular的问题
2017/06/23 jQuery
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
layui监听工具栏的实例(操作列表按钮)
2019/09/10 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
原生JS运动实现轮播图
2021/01/02 Javascript
Python3实现生成随机密码的方法
2014/08/23 Python
跟老齐学Python之Import 模块
2014/10/13 Python
举例区分Python中的浅复制与深复制
2015/07/02 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
2018/12/11 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
我就是这样学习Python中的列表
2019/06/02 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
np.random.seed() 的使用详解
2020/01/14 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
Python requests模块cookie实例解析
2020/04/14 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
总经理助理的八要求
2013/11/12 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
营业员岗位职责
2015/02/11 职场文书
辞职信标准格式
2015/02/27 职场文书
如何做好工作总结!
2019/04/10 职场文书
Python实战实现爬取天气数据并完成可视化分析详解
2022/06/16 Python