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 数组教程 定义数组
Oct 23 PHP
PHP 手机归属地查询 api
Feb 08 PHP
php开发环境配置记录
Jan 14 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
Oct 30 PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 PHP
PHP实现链式操作的核心思想
Jun 23 PHP
php二维码生成
Oct 19 PHP
简述php环境搭建与配置
Dec 05 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
PHP jQuery+Ajax结合写批量删除功能
May 19 PHP
PHP基于自定义类随机生成姓名的方法示例
Aug 05 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 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中socket的用法详解
2014/10/24 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
2019/03/12 PHP
IE autocomplete internet explorer's autocomplete
2007/06/30 Javascript
JavaScript 事件的一些重要说明
2009/10/25 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
[01:00:59]VP VS VG Supermajor小组赛胜者组第二轮 BO3第二场 6.2
2018/06/03 DOTA
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
php使用递归与迭代实现快速排序示例
2014/01/23 Python
Python单链表的简单实现方法
2014/09/23 Python
为Python的web框架编写MVC配置来使其运行的教程
2015/04/30 Python
以windows service方式运行Python程序的方法
2015/06/03 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
对python append 与浅拷贝的实例讲解
2018/05/04 Python
使用tensorflow实现线性svm
2018/09/07 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
Python中一般处理中文的几种方法
2019/03/06 Python
英国日常交易网站:Wowcher
2018/09/04 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
盛大二次面试题
2016/11/18 面试题
应届生护士求职信
2013/11/01 职场文书
党委书记岗位职责
2013/11/24 职场文书
作文评语大全
2014/04/23 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python