一个简洁的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中看实例学正则表达式
Dec 25 PHP
海河写的 Discuz论坛帖子调用js的php代码
Aug 23 PHP
PHP读取MySQL数据代码
Jun 05 PHP
10条PHP编程习惯助你找工作
Sep 29 PHP
php 移除数组重复元素的一点说明
Nov 27 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
php中的比较运算符详解
Oct 28 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
100多行PHP代码实现socks5代理服务器[2]
May 05 PHP
thinkphp下MySQL数据库读写分离代码剖析
Apr 18 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 PHP
php去除deprecated的实例方法
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
Snoopy类使用小例子
2008/04/15 PHP
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
php下统计用户在线时间的一种尝试
2010/08/26 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
JavaScript 设计模式学习 Factory
2009/07/29 Javascript
js loading加载效果实现代码
2009/11/24 Javascript
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
js实现楼层导航功能
2017/02/23 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
vue实现通讯录功能
2018/07/14 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
JS浏览器BOM常见操作实例详解
2020/04/27 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
Python制作简单的网页爬虫
2015/11/22 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
python随机数分布random均匀分布实例
2019/11/27 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
基于Python 函数和方法的区别说明
2021/03/24 Python
工程专业毕业生自荐信范文
2013/12/25 职场文书
大型主题婚礼活动策划方案
2014/09/15 职场文书
小学生读书笔记
2015/07/01 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
关于vue-router-link选择样式设置
2022/04/30 Vue.js