一个简洁的PHP可逆加密函数(分享)


Posted in PHP onJune 06, 2013

很多时候我们需要对数据进行加密解密,比如有些数据需要保存到cookie中,但又不能被用户轻易得到这些数据,这时我们就需要加密这些数据保存到cookie中,等我们需要使用它们的时候再解密。

加密的过程如下:

// 加密数据并写到cookie里
$cookie_data = $this -> encrypt("nowamagic", $data);$cookie = array(
    'name'   => '$data',
    'value'  => $cookie_data,
    'expire' => $user_expire,
    'domain' => '',
    'path'   => '/',
    'prefix' => ''
);
$this->input->set_cookie($cookie);
// 加密
public function encrypt($key, $plain_text) {  
    $plain_text = trim($plain_text);  
    $iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB));  
    $c_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $plain_text, MCRYPT_ENCRYPT, $iv);  
    return trim(chop(base64_encode($c_t)));  
}  

使用的时候再解密:
if( isset($_COOKIE['data']) )
{
    //用cookie给session赋值
    $_SESSION['data'] = decrypt("nowamagic", $_COOKIE['data']);
}
function decrypt($key, $c_t) {  
    $c_t = trim(chop(base64_decode($c_t)));  
    $iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB));  
    $p_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $c_t, MCRYPT_DECRYPT, $iv);  
    return trim(chop($p_t));  
} 

这里记录下这个可逆的加密函数的使用。
PHP 相关文章推荐
php上传、管理照片示例
Oct 09 PHP
php cookie的操作实现代码(登录)
Dec 29 PHP
PHP与SQL注入攻击防范小技巧
Sep 16 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
CodeIgniter中实现泛域名解析
Jul 19 PHP
PHP中的use关键字概述
Jul 23 PHP
php截取字符串函数分享
Feb 02 PHP
PHP解压ZIP文件到指定文件夹的方法
Nov 17 PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 PHP
PHP实现的MD5结合RSA签名算法实例
Oct 07 PHP
laravel 操作数据库常用函数的返回值方法
Oct 11 PHP
tp5使用layui实现多个图片上传(带附件选择)的方法实例
Nov 17 PHP
深入PHP获取随机数字和字母的方法详解
Jun 06 #PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 #PHP
深入PHP中慎用双等于(==)的详解
Jun 06 #PHP
解析PHP中如何将数组变量写入文件
Jun 06 #PHP
浅谈PHP强制类型转换,慎用!
Jun 06 #PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 #PHP
$_GET['goods_id']+0 的使用详解
Jun 06 #PHP
You might like
生成卡号php代码
2008/04/09 PHP
PHP5 的对象赋值机制介绍
2011/08/02 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
在smarty中调用php内置函数的方法
2013/02/07 PHP
PHP实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
javascript 继承实现方法
2009/08/26 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
2013/10/18 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
遍历json获得数据的几种方法小结
2017/01/21 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
跟老齐学Python之再深点,更懂list
2014/09/20 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
什么是servlet链?
2014/07/13 面试题
岗位职责怎么写
2014/03/14 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
七年级生物教学反思
2016/02/20 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书