带密匙的php加密解密示例分享


Posted in PHP onJanuary 29, 2014
<?php 
$id = "https://3water.com";
$token = encrypt($id, 'E', '3water');
echo '加密:'.encrypt($id, 'E', '3water');
echo '<br />';
echo '解密:'.encrypt($token, 'D', '3water');
/*********************************************************************
函数名称:encrypt
函数作用:加密解密字符串
使用方法:
加密 :encrypt('str','E','qingdou');
解密 :encrypt('被加密过的字符串','D','qingdou');
参数说明:
$string   :需要加密解密的字符串
$operation:判断是加密还是解密:E:加密   D:解密
$key  :加密的钥匙(密匙);
*********************************************************************/
function encrypt($string,$operation,$key='')
{
$src  = array("/","+","=");
$dist = array("_a","_b","_c");
if($operation=='D'){$string  = str_replace($dist,$src,$string);}
$key=md5($key);
$key_length=strlen($key);
$string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string;
$string_length=strlen($string);
$rndkey=$box=array();
$result='';
for($i=0;$i<=255;$i++)
{
$rndkey[$i]=ord($key[$i%$key_length]);
$box[$i]=$i;
}
for($j=$i=0;$i<256;$i++)
{
$j=($j+$box[$i]+$rndkey[$i])%256;
$tmp=$box[$i];
$box[$i]=$box[$j];
$box[$j]=$tmp;
}
for($a=$j=$i=0;$i<$string_length;$i++)
{
$a=($a+1)%256;
$j=($j+$box[$a])%256;
$tmp=$box[$a];
$box[$a]=$box[$j];
$box[$j]=$tmp;
$result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));
}
if($operation=='D')
{
if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8))
{
return substr($result,8);
}
else
{
return'';
}
}
else
{
$rdate  = str_replace('=','',base64_encode($result));
$rdate  = str_replace($src,$dist,$rdate);
return $rdate;
}
}
?>
PHP 相关文章推荐
PHP Pear 安装及使用
Mar 19 PHP
JS 网站性能优化笔记
May 24 PHP
php多文件上传功能实现原理及代码
Apr 18 PHP
基于PHP5魔术常量与魔术方法的详解
Jun 13 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 PHP
php实现的百度搜索某地天气的小偷代码
Apr 23 PHP
php去掉URL网址中带有PHPSESSID的配置方法
Jul 08 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
May 09 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
Jan 22 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 PHP
PHP过滤★等特殊符号的正则
Jan 27 #PHP
php中自定义函数dump查看数组信息类似var_dump
Jan 27 #PHP
PHP中的按位与和按位或操作示例
Jan 27 #PHP
php遍历目录输出目录及其下的所有文件示例
Jan 27 #PHP
PHP中source #N问题的解决方法
Jan 27 #PHP
php计算数组不为空元素个数的方法
Jan 27 #PHP
两级联动select刷新后其值保持不变的实现方法
Jan 27 #PHP
You might like
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
php实现微信公众平台账号自定义菜单类
2015/10/11 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
Javascript typeof 用法
2008/12/28 Javascript
基于jQuery的history历史记录插件
2010/12/11 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
js获取当月最后一天实例代码
2013/11/19 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
vue使用nprogress加载路由进度条的方法
2020/06/04 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
python类中super()和__init__()的区别
2016/10/18 Python
python编程实现希尔排序
2017/04/13 Python
20个常用Python运维库和模块
2018/02/12 Python
对python中的高效迭代器函数详解
2018/10/18 Python
Python os.access()用法实例
2019/02/18 Python
python实现微信每日一句自动发送给喜欢的人
2019/04/29 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
Python3实现定时任务的四种方式
2019/06/03 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
护士检查书
2014/01/17 职场文书
区三好学生主要事迹
2014/01/30 职场文书
采购助理岗位职责
2014/02/16 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
社区平安建设方案
2014/05/25 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
2016七一建党节慰问信
2015/11/30 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
纯html+css实现Element loading效果
2021/08/02 HTML / CSS
MySQL实现配置主从复制项目实践
2022/03/31 MySQL