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学习笔记之一
Jan 17 PHP
使用php测试硬盘写入速度示例
Jan 27 PHP
PHP对接微信公众平台消息接口开发流程教程
Mar 25 PHP
php通过array_merge()函数合并两个数组的方法
Mar 18 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
php超快高效率统计大文件行数
Jul 05 PHP
PHP微信支付实例解析
Jul 22 PHP
PHP页面跳转实现延时跳转的方法
Dec 10 PHP
使用PHPMailer发送邮件实例
Feb 15 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
Jun 08 PHP
PHP var关键字相关原理及使用实例解析
Jul 11 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
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
PHP读取txt文件的内容并赋值给数组的代码
2011/11/03 PHP
php对图像的各种处理函数代码小结
2013/07/08 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
5种处理js跨域问题方法汇总
2014/12/04 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
jQuery实现的分子运动小球碰撞效果
2016/01/27 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
Bootstrap模态框(Modal)实现过渡效果
2017/03/17 Javascript
基于 webpack2 实现的多入口项目脚手架详解
2017/06/26 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
在HTML文档中嵌入JavaScript的四种方法
2018/05/07 Javascript
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python正则表达式匹配ip地址实例
2014/10/09 Python
python实现无证书加密解密实例
2014/10/27 Python
Python2实现的LED大数字显示效果示例
2017/09/04 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
2018/05/24 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
安装PyInstaller失败问题解决
2019/12/14 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
PyQt5实现画布小程序
2020/05/30 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
英国办公用品商店:Office Outlet
2018/04/04 全球购物
Python中如何定义一个函数
2016/09/06 面试题
实习鉴定范文
2013/12/19 职场文书
食品厂厂长岗位职责
2014/01/30 职场文书
2014大学生学生会工作总结
2014/12/19 职场文书
党风廉正建设责任书
2015/01/29 职场文书
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript