PHP加密解密函数详解


Posted in PHP onOctober 28, 2015

分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。
加密代码如下:

/* 
*功能:对字符串进行加密处理 
*参数一:需要加密的内容 
*参数二:密钥 
*/ 
function passport_encrypt($str,$key){ //加密函数 
  srand((double)microtime() * 1000000); 
  $encrypt_key=md5(rand(0, 32000)); 
  $ctr=0; 
  $tmp=''; 
  for($i=0;$i<strlen($str);$i++){ 
    $ctr=$ctr==strlen($encrypt_key)?0:$ctr; 
    $tmp.=$encrypt_key[$ctr].($str[$i] ^ $encrypt_key[$ctr++]); 
  } 
  return base64_encode(passport_key($tmp,$key)); 
}

解密代码如下:

/* 
*功能:对字符串进行解密处理 
*参数一:需要解密的密文 
*参数二:密钥 
*/ 
function passport_decrypt($str,$key){ //解密函数 
  $str=passport_key(base64_decode($str),$key); 
  $tmp=''; 
  for($i=0;$i<strlen($str);$i++){ 
    $md5=$str[$i]; 
    $tmp.=$str[++$i] ^ $md5; 
  } 
  return $tmp; 
}

辅助函数:

/* 
*辅助函数 
*/ 
function passport_key($str,$encrypt_key){ 
  $encrypt_key=md5($encrypt_key); 
  $ctr=0; 
  $tmp=''; 
  for($i=0;$i<strlen($str);$i++){ 
    $ctr=$ctr==strlen($encrypt_key)?0:$ctr; 
    $tmp.=$str[$i] ^ $encrypt_key[$ctr++]; 
  } 
  return $tmp; 
}

使用如下所示:

$str='作者:余浩苗;电话:13611972365;电子邮件:123cvbz@163.com'; 
 
$key='hacker'; 
$encrypt=passport_encrypt($str,$key); 
$decrypt=passport_decrypt($encrypt,$key); 
 
echo '原文:',$str."<br><hr>"; 
echo '密文:',$encrypt."<br><hr>"; 
echo '译文:',$decrypt."<br><hr>";

以上就是为大家分享的php加密解密函数,希望大家喜欢,可以应用到自己的学习中。

PHP 相关文章推荐
php adodb连接mssql解决乱码问题
Jun 12 PHP
PHP array操作10个小技巧分享
Jun 23 PHP
PHP中3种生成XML文件方法的速度效率比较
Oct 06 PHP
php中的静态变量的基本用法
Mar 20 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
WebQQ最新登陆协议的用法
Dec 22 PHP
php实现mysql数据库分表分段备份
Jun 18 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
PHP中Enum(枚举)用法实例详解
Dec 07 PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 PHP
php实现映射操作实例详解
Oct 02 PHP
在laravel框架中使用model层的方法
Oct 08 PHP
php实现阳历阴历互转的方法
Oct 28 #PHP
PHP框架Laravel学习心得体会
Oct 28 #PHP
php抓取并保存网站图片的实现代码
Oct 28 #PHP
php判断当前操作系统类型
Oct 28 #PHP
详解PHP序列化反序列化的方法
Oct 27 #PHP
php使用ZipArchive函数实现文件的压缩与解压缩
Oct 27 #PHP
php常量详细解析
Oct 27 #PHP
You might like
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
三种php连接access数据库方法
2013/11/11 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
2016/08/09 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
python 七种邮件内容发送方法实例
2014/04/22 Python
python绘制圆柱体的方法
2018/07/02 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
应届毕业生简历自我评价
2014/01/31 职场文书
初中同学聚会感言
2014/02/11 职场文书
学校募捐倡议书
2014/05/14 职场文书
媒体宣传策划方案
2014/05/25 职场文书
《秋天的怀念》教学反思
2016/02/17 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
java解析XML详解
2021/07/09 Java/Android
JavaScript异步操作中串行和并行
2021/11/20 Javascript