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 数字左侧自动补0
Mar 31 PHP
php REMOTE_ADDR之获取访客IP的代码
Apr 22 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
Php header()函数语法及使用代码
Nov 04 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
Jan 17 PHP
ThinkPHP表单自动提交验证实例教程
Jul 18 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
php代码架构的八点注意事项
Jan 25 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
PHP面相对象中的重载与重写
Feb 13 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 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令牌 Token改进版
2008/07/18 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
php实现分页工具类分享
2014/01/09 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
Js基础学习资料
2010/11/23 Javascript
JS修改css样式style浅谈
2013/05/06 Javascript
js常用数组操作方法简明总结
2014/06/20 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
浅谈js的异步执行
2016/10/18 Javascript
JS中数组重排序方法
2016/11/11 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
解决vue热替换失效的根本原因
2018/09/19 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
python Gabor滤波器讲解
2020/10/26 Python
python入门教程之基本算术运算符
2020/11/13 Python
html5指南-5.使用web storage存储键值对的数据
2013/01/07 HTML / CSS
家长给幼儿园的表扬信
2014/01/09 职场文书
财务担保书范文
2014/04/02 职场文书
战友聚会策划方案
2014/06/13 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
升学宴学生答谢词
2015/01/05 职场文书
奔腾年代观后感
2015/06/09 职场文书
数学复习课教学反思
2016/02/18 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript