一个简洁的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 Stream_*系列函数
Aug 01 PHP
PHP 时间日期操作实战
Aug 26 PHP
PHP垃圾回收机制引用计数器概念分析
Jun 24 PHP
Laravel 5 框架入门(一)
Apr 09 PHP
php实现html标签闭合检测与修复方法
Jul 09 PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
php实现数组纵向转横向并过滤重复值的方法分析
May 29 PHP
PHP单例模式简单用法示例
Jun 23 PHP
PHP静态延迟绑定和普通静态效率的对比
Oct 20 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
May 24 PHP
Laravel框架源码解析之入口文件原理分析
May 14 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按百分比生成缩略图的代码分享
2014/05/10 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
动态加载js和css(外部文件)
2013/04/17 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
vue.js的安装方法
2017/05/12 Javascript
JS中的三个循环小结
2017/06/20 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
使用PYTHON创建XML文档
2012/03/01 Python
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
python的Jenkins接口调用方式
2020/05/12 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
美国在线艺术商店:HandmadePiece
2020/11/06 全球购物
Bloomingdale’s阿联酋:选购奢华时尚、美容及更多
2020/09/22 全球购物
房产销售经理职责
2013/12/20 职场文书
金融专业大学生自我评价
2014/01/09 职场文书
满月酒主持词
2014/03/27 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
大学生自荐书范文
2015/03/05 职场文书
整改通知书
2015/04/20 职场文书