一个简洁的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 相关文章推荐
文件上传程序的全部源码
Oct 09 PHP
PHP文件操作实现代码分享
Sep 01 PHP
thinkphp3查询mssql数据库乱码解决方法分享
Feb 11 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
May 28 PHP
yii实现使用CUploadedFile上传文件的方法
Dec 28 PHP
CodeIgniter扩展核心类实例详解
Jan 20 PHP
PHP批量去除BOM头内容信息代码
Mar 11 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
Dec 29 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
php爬取天猫和淘宝商品数据
Feb 23 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 PHP
thinkphp5修改view到根目录实例方法
Jul 02 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出错界面
2006/10/09 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
php文件上传简单实现方法
2015/01/24 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
如何在Vue.js中实现标签页组件详解
2019/01/02 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
python调用自定义函数的实例操作
2019/06/26 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
tensorflow 模型权重导出实例
2020/01/24 Python
python如何安装下载后的模块
2020/07/03 Python
html5 canvas合成海报所遇问题及解决方案总结
2017/08/03 HTML / CSS
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
N:Philanthropy官网:美国洛杉矶基础款服装
2020/06/09 全球购物
关于.NET, HTML的五个问题
2012/08/29 面试题
自荐书格式
2013/12/01 职场文书
学生会副主席竞聘书
2014/03/31 职场文书
财务经理岗位职责
2015/01/31 职场文书
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android