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 和 COM
Oct 09 PHP
php echo()和print()、require()和include()函数区别说明
Mar 27 PHP
PHP设计模式之命令模式的深入解析
Jun 13 PHP
php不使用插件导出excel的简单方法
Mar 04 PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 PHP
PHP获取一年有几周以及每周开始日期和结束日期
Aug 06 PHP
深入理解PHP内核(二)之SAPI探究
Nov 10 PHP
thinkPHP实现将excel导入到数据库中的方法
Apr 22 PHP
PHP实现JS中escape与unescape的方法
Jul 11 PHP
Laravel实现表单提交
May 07 PHP
微信公众号实现会员卡领取功能
Jun 08 PHP
PHP中define() 与 const定义常量的区别详解
Jun 25 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代码
2008/04/09 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
IIS下PHP的三种配置方式对比
2014/11/20 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
js电信网通双线自动选择技巧
2008/11/18 Javascript
js 模拟气泡屏保效果代码
2010/07/10 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
jquery图片切换插件
2015/03/16 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
原生JS实现天气预报
2020/06/16 Javascript
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
python单线程实现多个定时器示例
2014/03/30 Python
编写Python的web框架中的Model的教程
2015/04/29 Python
Python实现读取并保存文件的类
2017/05/11 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
Python中的整除和取模实例
2020/06/03 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
工作经历证明书范文
2014/11/02 职场文书
第一书记观后感
2015/06/08 职场文书
节水宣传标语口号
2015/12/26 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书