Discuz   发布时间:2022-05-06  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了【推荐】UCHome Authcode 详解大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

 define('UC_KEY', 'g3e2G1fbe3M973fet7n5j3t0Zcz8u2g9edj1g9J4B7h1aaB7ya6489R_46_11845@0z0f4E5Mb'); // 与 UCenter 的通信密钥, 要与 UCenter 保持一致  代码 1   2  3 //定义默认函数初始值   4 //$String="admin";初始化$srTing变量数值在   5 //$keyc中调用   6@R_607_3816@ authcode($String='admin', $operation = 'DECODE', $key = '', $expiry = 0) {          7 $ckey_length = 4;        // 随机密钥长度 取值 0-32;                                   8 // 加入随机密钥,可以令密文无任何规律,   9 //即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。                                  10 // 取值越大,密文变动规律越大,密文变化 = //16 的 $ckey_length 次方                                  11 // 当此值为 0 时,则不产生随机密钥                                 12 $Mykey = md5(UC_KEY);  //对UC_KEY进行一次md5加密                                 13 echo "$Mykey  -- $Mykey  "; //输出  14 //$Mykey==c647d451bb5792d9cc1693a672380641          15 $key="";//定义key为empty                 16 $key = md5($key ? $key : UC_KEY);  //使用三原操作符,如果$key为  17 //空则对UC_KEY进行md5加密 否则对$key加密结果为$Mykey                18   echo "$key  -- $key  ";//输出$key==c647d451bb5792d9cc1693a672380641                  19 $key="abcdefghijklmnopqrstuvwsyz "; //定义$key=abcdefghijklmnopqrstuvwsyz 测试$keya结果              20     $keya = md5(substr($key, 0, 16));//用substr对$key进行截取得到从第一个到第16个字符                  21 echo "$keya is $keya ";//输出$keya=abcdefghijklmnop        22   $key="abcdefghijklmnopqrstuvwsyz123456";//定义$key         23 $keyb =md5(substr($key, 16, 16));//通过substr对$key进行截取   24 //截取方法为从第16位开始 向后截取到第32位结束         25 echo "$keyb $keyb ";//       26    //$keyc 使用的2层的三原操作符,理解如下$keyc = $ckey_length 的时候  27 //返回($operation == 'DECODE' ? substr($String, 0, $ckey_length): substr(md5(microtime()), -$ckey_length))   28 //否则返回empty  29 //上面的理解为$operation == 'DECODE';时候用substr截取$String变量的值,  30 //截取大小为从第0个到第$ckey_length个默认$ckey_length为4$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($String, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';echo "$keyc is $keyc ";  31 //输出按照我们初始的测试$keyc为admi$cryptkey = $keya.md5($keya.$keyc);//这个我估计不用说了   32 //就是单纯的字符串拼接和md5之后再拼接  33 echo "$cryptkey is $cryptkey";$key_length = strlen($cryptkey);//计算$cryptkey的长度本例为64  34 echo "$key_length  is $key_length ";//base64_decode对encoded_data 进行解码,返回原始数据,  35 //失败则返回 falSE。返回的数据可能是二进制的         36 $String = $operation == 'DECODE' ? base64_decode(substr($String, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($String.$keyb), 0, 16).$String;        $String_length = strlen($String);       37 echo "$satring is $String_length ";          38 $result = '';//range() 返回数组中从 low 到 high 的单元,包括它们本身。  39 如果 low > high,  40 //则序列将从 high 到 low。//根据cuh的设置,说的白话一点就是生成一个0到255的纯数字数组      41     $box = range(0, 255);         42 echo "$box is $box[1] ";       43    $rndkey = array();        //$i 输出0到255个整数        44   for($i = 0; $i <= 255; $i++) {        //ord()函数返回一个字符的askii码值;         45 //$rndkeY[$i]根据$i /$key_length的余数然后用ord处理          46 //$cryptkeY[$i % $key_length]返回$cryptkey  47 数组里的键值$i=2返回第二位        48   //$rndkeY[$i]从数组的第$i位开始返回$rndkeY[$i]的值               49    $rndkeY[$i] = ord($cryptkeY[$i % $key_length]);                //echo "$rndkeY[$i] is $rndkeY[2]   ";        }       50    for($j = $i = 0; $i < 256; $i++) {  51 //$j是三个数相加与256取余                 52 $j = ($j + $box[$i] + $rndkeY[$i]) % 256;                 53 $tmp = $box[$i];                54   $box[$i] = $box[$j];                  55 $box[$j] = $tmp;                //echo "$j is $j  ";        }//如果$i小于设定的随机密钥长度则$i加1        56   for($a = $j = $i = 0; $i < $String_length; $i++) {                  57 //在上面基础上再加1 然后和256取余  58 $a = ($a + 1) % 256;                  59 $j = ($j + $box[$a]) % 256;//$j加$box[$a]的值 再和256取余                 60 $tmp = $box[$a];                61   $box[$a] = $box[$j];               62    $box[$j] = $tmp;                // ^  位运算符允许对整型数中指定的位进行置位。  63 //如果左右参数都是字符串,则位运算符将操作字符的 ASCII 值                 64 //chr 返回相对应于 ascii 所指定的单个字符 。  65 //也就是说根据chr函数里生成的数的ascii来指定要输出的字符                 66 $result .= chr(ord($String[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));        }//这么多吧!后边的我把函数给大家 就是算法的反复重用了,  67 //还调用了时间函数。//base64_encode() returns 使用 base64 对 data 进行编码。  68 //设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,  69 //例如电子邮件的主体。 //str_replace() 函数使用一个字符串替换字符串中的另一些字符。  70 /*str_replace(find,replace,String,count)find 规定要查找的值。   71 *replace 规定替换 find 中的值的值。   72 *0String 规定被搜索的字符串。  73 *count 一个变量,对替换数进行计数。  74 */         75 if($operation == 'DECODE') {                 76 if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {                         77 return substr($result, 26);                  78 } else {                        return '';                }         79 } else {                return $keyc.str_replace('=', '', base64_encode($result));        }          80 }81    $key=authcode(’blog123456′,’ENCO

<div class="cnblogs_code">

@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@

  

@H_618_23@代码
@H_618_23@ @H_618_23@@H_618_23@ @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@函数初始值  @H_618_23@ @H_618_23@@H_618_23@ @H_618_23@调用  @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@随机密钥长度 取值 0-32;                                  @H_618_23@ @H_618_23@随机密钥,可以令密文无任何规律,  @H_618_23@ @H_618_23@@H_618_23@ @H_618_23@@H_618_23@ @H_618_23@随机密钥                                 @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@输出  @H_618_23@ @H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@输出$key==c647d451bb5792d9cc1693a672380641                  @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@截取得到从第一个到第16个字符                  @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@输出$keya=abcdefghijklmnop        @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@截取   @H_618_23@ @H_618_23@截取方法为从第16位开始 向后截取到第32位结束         @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@ @H_618_23@@H_618_23@ @H_618_23@@H_618_23@ @H_618_23@截取$String变量的值,  @H_618_23@ @H_618_23@截取大小为从第0个到第$ckey_length个认$ckey_length为4$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($String, -$ckey_length)) : '';echo "$keyc is $keyc ";  @H_618_23@ @H_618_23@输出按照我们初始的测试$keyc为admi$cryptkey = $keya.md5($keya.$keyc);//这个我估计不用说了   @H_618_23@ @H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@包括它们本身。  @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@生成一个0到255的纯数字数组      @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@Box@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@Box@H_618_23@@H_618_23@Box@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@输出0到255个整数        @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@<>@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@函数返回一个字符的askii码值;         @H_618_23@ @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@Box@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@Box@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@Box@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@Box@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@Box@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@随机密钥长度则$i加1        @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@Box@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@Box[$a]的值 再和256取余                 @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@Box@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@Box@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@Box@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@Box@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@ @H_618_23@@H_618_23@ @H_618_23@函数生成的数的ascii来指定要输出的字符                 @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@Box@H_618_23@@H_618_23@Box@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@Box@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@函数给大家 就是算法的反复重用了,  @H_618_23@ @H_618_23@调用时间函数。//base64_encode() returns 使用 base64 对 data 进行编码。  @H_618_23@ @H_618_23@@H_618_23@ @H_618_23@邮件的主体。 //str_replace() 函数使用一个字符串替换字符串中的另一些字符。  @H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@ @H_618_23@搜索的字符串。  @H_618_23@ @H_618_23@一个变量,对替换数进行计数。  @H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@@H_618_23@ @H_618_23@@H_618_23@ @H_618_23@

大佬总结

以上是大佬教程为你收集整理的【推荐】UCHome Authcode 详解全部内容,希望文章能够帮你解决【推荐】UCHome Authcode 详解所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: