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扩展函数
Oct 09 PHP
echo, print, printf 和 sprintf 区别
Dec 06 PHP
PHP 魔术函数使用说明
May 14 PHP
php SQL Injection with MySQL
Feb 27 PHP
php获取用户IPv4或IPv6地址的代码
Nov 15 PHP
PHP下使用CURL方式POST数据至API接口的代码
Feb 14 PHP
php中switch与ifelse的效率区别及适用情况分析
Feb 12 PHP
如何用PHP来实现一个动态Web服务器
Jul 29 PHP
php使用正则验证中文
Apr 06 PHP
PHP与以太坊交互详解
Aug 24 PHP
php实现文章评论系统
Feb 18 PHP
如何在PHP中使用AES加密算法加密数据
Jun 24 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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
又一个php 分页类实现代码
2009/12/03 PHP
PHP对字符串的递增运算分析
2010/08/08 PHP
php动态实现表格跨行跨列实现代码
2012/11/06 PHP
thinkphp实现like模糊查询实例
2014/10/29 PHP
PHP会话处理的10个函数
2015/08/11 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
JQuery 学习技巧总结
2010/05/21 Javascript
yepnope.js 异步加载资源文件
2011/09/08 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
解决vue页面刷新或者后退参数丢失的问题
2018/03/13 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
JavaScript Canvas编写炫彩的网页时钟
2019/10/16 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
js闭包的9个使用场景
2020/12/29 Javascript
解读Django框架中的低层次缓存API
2015/07/24 Python
对Python模块导入时全局变量__all__的作用详解
2019/01/11 Python
Python之循环结构
2019/01/15 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
python Pexpect模块的使用
2020/12/25 Python
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
毕业生找工作的自我评价
2013/10/18 职场文书
直接有效的自我评价
2014/01/11 职场文书
大学生水果店创业计划书
2014/01/28 职场文书
毕业生写求职信的要点
2014/03/04 职场文书
大家访活动实施方案
2014/03/10 职场文书
监督检查工作方案
2014/05/28 职场文书
初婚初育证明范本
2015/06/18 职场文书
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python