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与SQL注入攻击[一]
Apr 17 PHP
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
Jun 08 PHP
fetchAll()与mysql_fetch_array()的区别详解
Jun 05 PHP
PHP中fwrite与file_put_contents性能测试代码
Aug 02 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
Jan 26 PHP
php将html转成wml的WAP标记语言实例
Jul 08 PHP
利用“多说”制作留言板、评论系统
Jul 14 PHP
CI分页类首页、尾页不显示的解决方法
Mar 28 PHP
Yii框架连接mongodb数据库的代码
Jul 27 PHP
php删除数组指定元素实现代码
May 03 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 PHP
设定php简写功能的方法
Nov 28 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
DISCUZ 分页代码
2007/01/02 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
javascript 学习之旅 (2)
2009/02/05 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
js无刷新操作table的行和列
2014/03/27 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
独特的python循环语句
2016/11/20 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
python+selenium开发环境搭建图文教程
2017/08/11 Python
Python可迭代对象操作示例
2019/05/07 Python
Python实现简单的列表冒泡排序和反转列表操作示例
2019/07/10 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
python 读取、写入txt文件的示例
2020/09/27 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
渡河少年教学反思
2014/02/12 职场文书
黄金酒广告词
2014/03/21 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
写给医生的感谢信
2015/01/22 职场文书
详解jQuery的核心函数和事件处理
2022/02/18 jQuery
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记
linux目录管理方法介绍
2022/06/01 Servers