【记录】PHP对传递的字符串变量进行加密与解密的方法
更新:2015-12-10 14:58:15
人气:6880
来源:本站整理
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
说明:因加入了时间戳函数,所以加密后的字符串是动态发生变化的。
推荐的文章
随手记
- ● 自制(IP或域名)可信任的SSL证书,适用360、chrome等浏览器
- ● windows系统下php无法使用curl怎么办?
- ● 绿联UGREENKVM切换器(分屏器)快捷键丢失解决办法
- ● 统信UOS开机指定网址全屏启动自带浏览器以及屏蔽ALT+F4关闭
- ● xshellSSH连接Linux服务器防止超时退出
- ● php8开启OpenSSL扩展库报错disabledinstallext
- ● 统信系统linux安装php时的报错libxml-2.0>=2.7.6
- ● tidb关闭sql_mode=ONLY_FULL_GROUP_BY模式
- ● windows10如何开机自动运行bat文件
- ● Win10Mysql8初始密码丢失,初始化又不显示密码
PHP经验分享
- ● PHP批量对TCP服务端指定多个IP非阻塞检查在线状态
- ● python实现TCP服务端持续接收关机、重启指令并输出结果【系列三】
- ● PHP给TCP服务端发送指令【系列二】
- ● PHP判断TCP服务端是否在线【系列一】
- ● PHP判断远程文件是否存在
- ● LINUX下用PHP获取CPU型号、内存占用、硬盘占用等信息代码
- ● PHP代码用UDP方式远程唤醒电脑让计算机开机
- ● apache下php生成验证码图片不能显示
- ● PHP使用AES加密解密示例(无偏移)
- ● Pluginmysql_native_passwordreported:''mysql_native_password'isdeprecate问题