算法一:
//加密函数function lock_url($txt,$key=‘yang‘){ ?$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=‘yang‘){ ?$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);}
算法二:
function passport_encrypt($txt, $key = ‘yang‘) { ??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 = ‘yang‘) { ??$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 lock_url($txt,$key=‘yang‘){ ?$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=‘yang‘){ ?$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);}
php 加密解密函数封装
原文地址:https://www.cnblogs.com/yang-2018/p/10195206.html