欢迎您来到,李雷博客 | PHP博客        登录  |  注册

【记录】PHP对传递的字符串变量进行加密与解密的方法

更新:2015-12-10 14:58:15
人气:6647
来源:本站整理
A+

这里首先感谢一下网友“技术部-陆端峰”,很细心的提醒了我,关于博客留言列表里直接显示了用户邮箱的BUG,在此深深感谢一下!利用了一点时间,再百度上找到了一个PHP对字符串变量加密与解密的方法,直接整理一下拿过来用了,测试可行,至于后期稳定性和安全性如何,慢慢体验再说。顺手整理了一下,分享给大家!

具体的代码:

/*
*功能:对字符串进行加密处理
*参数一:需要加密的内容
*参数二:密钥
*/

$key_mi='123456';  //自己设置的密钥

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;
}

//调用方法(加密):
//passport_encrypt(需加密的字符串,$key_mi);

//调用方法(解密):
//passport_decrypt(需解密的字符串,$key_mi);

实际使用示例:

$a='mdaima';
echo "原字符串:".$a."</br>";
$jiami=passport_encrypt($a,$key_mi);
echo "加密后字符串:".$jiami."</br>";
echo "解密后字符串:".passport_decrypt($jiami,$key_mi)."</br>";

输出结果:

原字符串:mdaima
加密后字符串:VG1TZgFnUjEGZlAy
解密后字符串:mdaima

说明:因加入了时间戳函数,所以加密后的字符串是动态发生变化的。

推荐的文章
# 发表我的评论
  /     /  
# 最近评论
暂时还没有评论,要不要说点什么?
  Ads by Google
  联系博主
Hello,本博客系统采用PHP和MySql开发,程序开发完全是因为个人爱好,是自己纯手写PHP源代码,未采用任何PHP框架!
QQ:858353007   微信号:lileihot123
网站地图
会员服务
关于我们
QQ:858353007
 
广告服务
加我微信
移动端访问
 
 
Copyright © 2014- 2024 www.mdaima.com All Rights Reserved.
李雷博客,专注PHP经验、PHP教程及PHP源代码开源下载分享的PHP博客!   ICP备案号:京ICP备10202169号-4