分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

php实现的三个常用加密解密功能函数示例

发布时间:2023-09-06 02:18责任编辑:彭小芳关键词:加密解密

目录

  • 算法一:
  • 算法二:
  • 算法三(改进第一个加密之后的算法)

本文实例讲述了php实现的三个常用加密解密功能函数。分享给大家供大家参考,具体如下:

算法一:

//加密函数function lock_url($txt,$key=‘www.jb51.net‘){ ?$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+"; ?$nh = rand(0,64); ?$ch = $chars[$nh]; ?$mdKey = md5($key.$ch); ?$mdKey = substr($mdKey,$nh%8, $nh%8+7); ?$txt = base64_encode($txt); ?$tmp = ‘‘; ?$i=0;$j=0;$k = 0; ?for ($i=0; $i<strlen($txt); $i++) { ???$k = $k == strlen($mdKey) ? 0 : $k; ???$j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64; ???$tmp .= $chars[$j]; ?} ?return urlencode($ch.$tmp);}//解密函数function unlock_url($txt,$key=‘www.jb51.net‘){ ?$txt = urldecode($txt); ?$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+"; ?$ch = $txt[0]; ?$nh = strpos($chars,$ch); ?$mdKey = md5($key.$ch); ?$mdKey = substr($mdKey,$nh%8, $nh%8+7); ?$txt = substr($txt,1); ?$tmp = ‘‘; ?$i=0;$j=0; $k = 0; ?for ($i=0; $i<strlen($txt); $i++) { ???$k = $k == strlen($mdKey) ? 0 : $k; ???$j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]); ???while ($j<0) $j+=64; ???$tmp .= $chars[$j]; ?} ?return base64_decode($tmp);}

用法:

$str="脚本之家";$pwd = lock_url($str);echo "加密之后:".$pwd."<br/>";echo "解密还原:".unlock_url($pwd);

运行结果:

加密之后:7MI21MNFgbrlr解密之后:脚本之家

算法二:

<?phpfunction passport_encrypt($txt, $key = ‘www.jb51.net‘) { ??srand((double)microtime() * 1000000); ??$encrypt_key = md5(rand(0, 32000)); ??$ctr = 0; ??$tmp = ‘‘; ??for($i = 0;$i < strlen($txt); $i++) { ??$ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr; ??$tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]); ??} ??return urlencode(base64_encode(passport_key($tmp, $key))); } function passport_decrypt($txt, $key = ‘www.jb51.net‘) { ??$txt = passport_key(base64_decode(urldecode($txt)), $key); ??$tmp = ‘‘; ??for($i = 0;$i < strlen($txt); $i++) { ??$md5 = $txt[$i]; ??$tmp .= $txt[++$i] ^ $md5; ??} ??return $tmp; } function passport_key($txt, $encrypt_key) { ??$encrypt_key = md5($encrypt_key); ??$ctr = 0; ??$tmp = ‘‘; ??for($i = 0; $i < strlen($txt); $i++) { ??$ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr; ??$tmp .= $txt[$i] ^ $encrypt_key[$ctr++]; ??} ??return $tmp; } ?>

用法:

<?php$txt = "1";$key = "testkey";$encrypt = passport_encrypt($txt,$key);$decrypt = passport_decrypt($encrypt,$key);echo $encrypt."<br>";echo $decrypt."<br>";?>

运行结果:

ADE%3D1

算法三(改进第一个加密之后的算法)

//加密函数function lock_url($txt,$key=‘www.jb51.net‘){ ?$txt = $txt.$key; ?$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+"; ?$nh = rand(0,64); ?$ch = $chars[$nh]; ?$mdKey = md5($key.$ch); ?$mdKey = substr($mdKey,$nh%8, $nh%8+7); ?$txt = base64_encode($txt); ?$tmp = ‘‘; ?$i=0;$j=0;$k = 0; ?for ($i=0; $i<strlen($txt); $i++) { ???$k = $k == strlen($mdKey) ? 0 : $k; ???$j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64; ???$tmp .= $chars[$j]; ?} ?return urlencode(base64_encode($ch.$tmp));}//解密函数function unlock_url($txt,$key=‘www.jb51.net‘){ ?$txt = base64_decode(urldecode($txt)); ?$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+"; ?$ch = $txt[0]; ?$nh = strpos($chars,$ch); ?$mdKey = md5($key.$ch); ?$mdKey = substr($mdKey,$nh%8, $nh%8+7); ?$txt = substr($txt,1); ?$tmp = ‘‘; ?$i=0;$j=0; $k = 0; ?for ($i=0; $i<strlen($txt); $i++) { ???$k = $k == strlen($mdKey) ? 0 : $k; ???$j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]); ???while ($j<0) $j+=64; ???$tmp .= $chars[$j]; ?} ?return trim(base64_decode($tmp),$key);}

用法

$str="脚本之家";$pwd = lock_url($str);echo "加密之后:".$pwd."<br/>";echo "解密还原:".unlock_url($pwd);

运行结果:

加密之后:clNBeVRPSS04VHhzYj0otMHNadjJWUTR5ME4%3D解密之后:脚本之家

php实现的三个常用加密解密功能函数示例

原文地址:https://www.cnblogs.com/haima/p/9789081.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved