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 中文字符入库或显示乱码问题的解决方法
Apr 12 PHP
Base64在线编码解码实现代码 演示与下载
Jan 08 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
php json_encode()函数返回json数据实例代码
Oct 10 PHP
php实现过滤字符串中的中文和数字实例
Jul 29 PHP
简单实现PHP留言板功能
Dec 21 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
简单谈谈 php 文件锁
Feb 19 PHP
php生成图片缩略图功能示例
Feb 22 PHP
PHP-CGI远程代码执行漏洞分析与防范
May 07 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 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
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
2015/03/04 Javascript
jquery使用经验小结
2015/05/20 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
常用的几个JQuery代码片段
2017/03/13 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
Python正则简单实例分析
2017/03/21 Python
python的pdb调试命令的命令整理及实例
2017/07/12 Python
对python3新增的byte类型详解
2018/12/04 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
用Python画一个LinkinPark的logo代码实例
2019/09/10 Python
python实现字符串和数字拼接
2020/03/02 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
家长会学生家长演讲稿
2013/12/29 职场文书
机械电子工程专业自荐书
2014/06/10 职场文书
欢迎领导检查标语
2014/06/27 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
军事理论课感想
2015/08/11 职场文书
如何使用flask将模型部署为服务
2021/05/13 Python
详解Python生成器和基于生成器的协程
2021/06/03 Python
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS