¡¡¡¡±¾ÎĽ«½éÉÜÒ»¸ö¼òµ¥Ò×ÓõļÓÃÜ/½âÃÜËã·¨:ʹÓÃÒì»ò(XOR)ÔËËã¡£±¾Ëã·¨ÔÀí¼òµ¥£¬Ö¼ÔÚʹ¶ÁÕß¶ÔÐÅÏ¢µÄ¼ÓÃÜ/½âÃÜÓÐÒ»¸ö¸ü¼ÓÖ±¹ÛµÄÓ¡Ïó¡£
¡¡¡¡XORËã·¨ÔÀí
¡¡¡¡´Ó¼ÓÃܵÄÖ÷Òª·½·¨¿´£¬»»Î»·¨¹ýÓÚ¼òµ¥£¬ÌرðÊǶÔÓÚÊý¾ÝÁ¿ÉÙµÄÇé¿öºÜÈÝÒ×ÓÉÃÜÎIJ³öÃ÷ÎÄ£¬¶øÌæ»»·¨²»Ê§ÎªÒ»ÖÖÐÐÖ®ÓÐЧµÄ¼òÒ×Ëã·¨¡£
¡¡¡¡´Ó¸÷ÖÖÌæ»»·¨ÔËËãµÄÌØµã¿´£¬Òì»òÔËËã×îÊʺÏÓÃÓÚ¼òÒ×¼Ó½âÃÜÔËË㣬ÕâÖÖ·½·¨µÄÔÀíÊÇ:µ±Ò»¸öÊýAºÍÁíÒ»¸öÊýB½øÐÐÒì»òÔËËã»áÉú³ÉÁíÒ»¸öÊýC£¬Èç¹ûÔÙ½«CºÍB½øÐÐÒì»òÔËËãÔòCÓֻỹÔΪA¡£
¡¡¡¡Ïà¶ÔÓÚÆäËûµÄ¼òÒ×¼ÓÃÜËã·¨£¬XORËã·¨µÄÓŵãÈçÏ¡£
¡¡¡¡(1)Ëã·¨¼òµ¥£¬¶ÔÓڸ߼¶ÓïÑÔºÜÈÝÒ×ÄÜʵÏÖ¡£
¡¡¡¡(2)Ëٶȿ죬¿ÉÒÔÔÚÈκÎʱºò¡¢Èκεط½Ê¹Óá£
¡¡¡¡(3)¶ÔÈκÎ×Ö·û¶¼ÊÇÓÐЧµÄ£¬²»ÏñÓÐЩ¼òÒ×¼ÓÃÜËã·¨£¬Ö»¶ÔÎ÷ÎÄ×Ö·ûÓÐЧ£¬¶ÔÖÐÎļÓÃܺóÔÙ½âÃÜÎÞ·¨»¹ÔΪÔÀ´µÄ×Ö·û¡£
¡¡¡¡XORË㷨ʵÏÖ
¡¡¡¡ÉÏÒ»²¿·Ö½éÉÜÁËÈçºÎʹÓÃXORÔËËã½øÐмÓÃÜ/½âÃܵÄÔÀí£¬±¾½Ú½«Ê¹ÓÃÆä¼ÓÃÜÓû§µÄµÇ¼ÐÅÏ¢¡£¸ù¾ÝÉÏһС½Ú½éÉܵÄXOR¼ÓÃÜËã·¨µÄÔÀí£¬²»ÄÑд³öÒÔϵļÓÃܽâÃܺ¯Êý¡£Ê×ÏÈÁгö¼ÓÃÜËã·¨¡£
1 £¼!--encrypy_xor:¼òµ¥Ê¹ÓÃXORÔËËãµÄ¼ÓÃܺ¯Êý-----------------------£¾ 2 £¼?php 3 //¼ÓÃܺ¯Êý 4 function myEncrypt($string, $key) 5 { 6 for($i=0; $i£¼STRLEN($STRING); p $i++)<> 7 { 8 for($j=0; $j£¼STRLEN($KEY); p $j++)<> 9 { 10 $string[$i] = $string[$i]^$key[$j]; 11 } 12 } 13 return $string; 14 } ¡¡¡¡µÚ4Ðж¨ÒåÁ˼ÓÃܺ¯ÊýmyEncrypt()£¬ÊäÈë²ÎÊý$stringΪÃ÷ÎÄ£¬¶ø$keyΪÃÜÔ¿;Êä³öΪʹÓÃ$key×÷ΪÃÜÔ¿²¢Ê¹ÓÃXOR¼ÓÃÜËã·¨²úÉúµÄÃÜÎÄ¡£
¡¡¡¡µÚ6¡«12ÐеÄÍâ²ãforÑ»·¶ÔÃ÷ÎÄ×Ö·û´®µÄÿһ¸ö×Ö·û½øÐÐÑ»·£¬¶øÄÚ²ãµÄforÑ»·(µÚ8¡«11ÐÐ)¶ÔÃ÷ÎĵÄÿһ×Ö·ûÑ»·ÓëÃÜÔ¿µÄÿһλ×öÒì»òÔËËã¡£ÆäÔÀíÒѾÔÚÉÏһС½ÚÖнéÉÜ£¬²»ÔÙÖØÊö¡£
¡¡¡¡Í¬Ñù£¬Óë¼ÓÃܺ¯ÊýÀàËÆ£¬¿ÉÒÔд³öÏÂÃæµÄ½âÃܺ¯Êý¡£
1 //½âÃܺ¯Êý 2 function myDecrypt($string, $key) 3 { 4 for($i=0; $i£¼STRLEN($STRING); p $i++)<> 5 { 6 for($j=0; $j£¼STRLEN($KEY); p $j++)<> 7 { 8 $string[$i] = $key[$j]^$string[$i]; 9 } 10 } 11 return $string; 12 } 13 ?£¾ ¡¡¡¡µÚ4Ðж¨ÒåÁ˽âÃܺ¯ÊýmyDecrypt ()£¬ÊäÈë²ÎÊý$stringΪÃÜÎÄ£¬¶ø$keyΪÃÜÔ¿;Êä³öΪʹÓÃ$key×÷ΪÃÜÔ¿²¢Ê¹ÓÃXOR½âÃÜËã·¨²úÉúµÄÃ÷ÎÄ¡£
¡¡¡¡ÏÂÃæ£¬Í¨¹ýÒ»¸öÓ¦ÓÃʾÀýÀ´½øÒ»²½ËµÃ÷¼ÓÃܺ¯ÊýµÄ¹¦ÄÜ¡£
1 //ʾÀý 2 $my_password="chair"; 3 echo "my_password = $my_password"; 4 $my_key="1234567890"; 5 $my_password_en=myEncrypt($my_password,$my_key); 6 echo "my_password_en = $my_password_en"; 7 $my_password_de=myDecrypt($my_password_en,$my_key); 8 echo "my_password_de = $my_password_de"; ¡¡¡¡µÚ3ÐÐÊ×Ïȶ¨ÒåÁËÒ»¸öÃ÷ÎÄ$my_password£¬È»ºóÔÚµÚ4Ðж¨ÒåÃÜÔ¿$my_key¡£
¡¡¡¡µÚ5¡¢6Ðзֱðµ÷ÓüÓÃܺ¯ÊýÉú³ÉÃÜÎIJ¢Êä³ö;·´¹ýÀ´£¬ÓÖÔÚµÚ7¡¢8Ðн«ÃÜÎĽâÃÜ¡£
¡¡¡¡ÉÏÃæÊ¾ÀýµÄÔËÐнá¹ûÈçÏ¡£
¡¡¡¡my_password = chair
¡¡¡¡my_password_en = RYPXC
¡¡¡¡my_password_de = chair
¡¡¡¡ÓÃXORË㷨ʵÏÖÉí·ÝÑéÖ¤
¡¡¡¡ÉÏÁ½²¿·Ö·Ö±ð½éÉÜÁËʹÓÃXORÔËËã½øÐÐÐÅÏ¢¼ÓÃÜ/½âÃܵÄÔÀíºÍʵÏÖ£¬ÏÂÃæ£¬½«Ê¹ÓÃÕâÒ»·½·¨À´¶ÔÓû§µÄµÇ¼ÃÜÂë½øÐмÓÃÜ¡£±¾ÀýÖУ¬ÎªÁ˱£»¤Óû§µÄÃÜÂ룬ϵͳÏëÒª´ïµ½µÄÄ¿µÄÈçÏ¡£
¡¡¡¡¡¤ÔÚÓû§×¢²áʱ£¬Óû§ÐèÒªÌíдÓû§ÃÜÂë±íµ¥¡£
¡¡¡¡¡¤³ýÓû§±¾ÈËÖ®Í⣬ÆäËûÈκÎÈ˶¼ÎÞ·¨»ñÈ¡ÆäÃÜÂëÐÅÏ¢£¬°üÀ¨ÏµÍ³Éè¼ÆÕߺÍÊý¾Ý¿â¹ÜÀíÔ±¡£
¡¡¡¡¡¤ÏµÍ³Äܸù¾ÝÓû§ÊäÈëµÄÃÜÂëÑéÖ¤Óû§µÄºÏ·¨ÐÔ¡£
¡¡¡¡ÎªÁË´ïµ½ÒÔÉÏÄ¿µÄ£¬Ê¹ÓÃXORË㷨ʱ¿ÉÒÔÑ¡ÔñÓû§Ãû×÷ΪÃ÷ÎÄ£¬¶øÃÜÔ¿ÊÇÓû§×Ô¶¨ÒåµÄÃÜÂ룬Ȼºó½«¼ÓÃܺóµÄÓû§Ãû´æ´¢ÔÚÊý¾Ý¿âÖС£
¡¡¡¡ÁíÍ⣬ÔÚÓû§µÇ¼µÄʱºò£¬ÓÐÒÔÏÂÁ½ÖÖ·½Ê½À´ÑéÖ¤ºÏ·¨Óû§¡£
¡¡¡¡(1)¸ù¾ÝÆäÌá½»µÄÓû§Ãû(Ã÷ÎÄ)ºÍÃÜÂë(ÃÜÔ¿)ÐÅÏ¢ÖØÐ¼ÓÃÜ£¬²¢Ê¹ÓüÓÃܺóµÄÐÅÏ¢ÓëÊý¾Ý¿âÖд洢µÄÃÜÂëÐÅÏ¢½øÐбȽϣ¬Èç¹ûÏàµÈ£¬ÔòÓû§ºÏ·¨£¬·ñÔò£¬Îª·Ç·¨Óû§¡£
¡¡¡¡(2)¸ù¾ÝÊý¾Ý¿âÖд洢µÄÃÜÂëÐÅÏ¢(Ã÷ÎÄ)ºÍÓû§ÊäÈëµÄÃÜÂë(ÃÜÔ¿)ÐÅÏ¢½øÐнâÃÜ£¬²¢°Ñ¼ÓÃܺóµÄÐÅÏ¢ÓëÓû§Ìá½»µÄÓû§Ãû½øÐбȽϣ¬Èç¹ûÏàµÈ£¬ÔòÓû§ºÏ·¨£¬·ñÔò£¬Îª·Ç·¨Óû§¡£
¡¡¡¡Á½ÖÖ·½Ê½¶¼¿ÉÒÔʵÏÖµÚ3¸öÄ¿µÄ£¬±¾Àý£¬½«²ÉÓõÚ2ÖÖ·½Ê½¡£±¾ÀýµÄʵÏÖ´úÂë¿ÉÔÚ18.4.1½Ú¡°Óû§µÇ¼¡±ºÍ18.4.2½Ú¡°¼ì²éÓû§¡±µÄʵÏÖ»ù´¡Ö®ÉÏʵÏÖ£¬ÆäÖС°Óû§µÇ¼¡±Ò³ÃæÎÞÐè±ä»¯£¬¡°¼ì²éÓû§¡±µÄʵÏֲο¼ÈçÏ¡£
1 £¼?php 2 session_start(); //×°ÔØSession¿â£¬Ò»¶¨Òª·ÅÔÚÊ×ÐÐ 3 $user_name=$_POST["user_name"]; 4 session_register("user_name"); //×¢²á$user_name±äÁ¿,×¢ÒâûÓÐ$·ûºÅ 5 6 require_once("sys_conf.inc"); //ϵͳÅäÖÃÎļþ£¬°üº¬Êý¾Ý¿âÅäÖÃÐÅÏ¢ 7 require_once("encrypy_xor.php"); //°üº¬xor¼ÓÃܺ¯ÊýÎļþ 8 9 //Á¬½ÓÊý¾Ý¿â 10 $link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD); 11 mysql_select_db($DBNAME); //Ñ¡ÔñÊý¾Ý¿âmy_chat 12 13 //²éѯÊÇ·ñ´æÔڵǼÓû§ÐÅÏ¢ 14 $str="select name,password from user where name ='$user_name'"; 15 $result=mysql_query($str,$link_id); //Ö´Ðвéѯ 16 @$rows=mysql_num_rows($result); //È¡µÃ²éѯ½á¹ûµÄ¼Ç¼±ÊÊý 17 $user_name=$_SESSION["user_name"]; 18 $password=$_POST["password"]; 19 $password_en=myEncrypt($user_name,$password); //¼ÓÃÜÓû§ÐÅÏ¢ 20 21 //¶ÔÓÚÀÏÓû§ 22 if($rows!=0) 23 { 24 list($name,$pwd)=mysql_fetch_row($result); 25 $password_de=myDecrypt($pwd,$password); //½âÃÜÓû§ÐÅÏ¢ 26 27 //Èç¹ûÃÜÂëÊäÈëÕýÈ· 28 if($user_name==$password_de) 29 { 30 $str="update user set is_online =1 where name ='$user_name' and password='$password_en'"; 31 $result=mysql_query($str, $link_id); //Ö´Ðвéѯ 32 require("main.php"); //תµ½ÁÄÌìÒ³Ãæ 33 } 34 //ÃÜÂëÊäÈë´íÎó 35 else 36 { 37 require("relogin.php"); 38 } 39 } 40 //¶ÔÓÚÐÂÓû§£¬½«ÆäÐÅϢдÈëÊý¾Ý¿â 41 else 42 { 43 $str="insert into user (name,password,is_online) values('$user_name', '$password_en',1)"; 44 $result=mysql_query($str, $link_id); //Ö´Ðвéѯ 45 require("main.php"); //תµ½ÁÄÌìÒ³Ãæ 46 } 47 //¹Ø±ÕÊý¾Ý¿â 48 mysql_close($link_id); 49 ?£¾ ¡¡¡¡µÚ7ÐÐÒýÈëÁ˼ÓÃܺ¯ÊýÎļþencrypy_xor.php£¬°üÀ¨ÉÏһС½Ú½éÉܵÄÁ½¸öº¯Êý¡£
¡¡¡¡µÚ19ÐУ¬Ê¹ÓÃÓû§Ìá½»µÄÓû§ÃûºÍÃÜÂëµÃµ½¼ÓÃܺóµÄÃÜÂëÖµ£¬²¢ÇÒ¶ÔÓÚÐÂÓû§£¬ÔÚµÚ44Ðн«Õâ¸ö¼ÓÃܺóµÄÖµ´æ´¢ÔÚÊý¾Ý¿âÖС£
¡¡¡¡ÁíÍ⣬¶ÔÓÚÀÏÓû§£¬ÔÚµÚ24»ñÈ¡Êý¾Ý¿âÖÐÓû§ÃûºÍ¼ÓÃܺóµÄÃÜÂëÐÅÏ¢£¬²¢ÔÚ25ÐÐÀûÓÃÕâÁ½¸öÖµ½øÐнâÃÜ£¬È»ºóÔÚµÚ28ÐÐͨ¹ý±È½Ï½âÃܺóµÄÖµÓëÓû§Ìá½»µÄÓû§ÃûÐÅÏ¢À´¼ì²éÓû§µÄºÏ·¨ÐÔ¡£
¡¡¡¡×Ô¶¯Éú³ÉÃÜÔ¿
¡¡¡¡ÉÏÒ»²¿·Ö½éÉÜÁËÈçºÎʹÓÃXOR¼ÓÃÜËã·¨½øÐжÔÓû§ÐÅÏ¢µÄ¼ÓÃÜ£¬ÆäÖУ¬Óû§ËùÊäÈëµÄ¿ÚÁîÐÅϢʵ¼ÊÉϳÉΪÁ˼ÓÃÜËã·¨ÖеÄÃÜÔ¿£¬¶øÓû§Ãû×÷ΪÃ÷ÎÄʹÓã¬ËäÈ»ÕâÄܺܺõØÍê³É¹¦ÄÜ£¬µ«ÊÇÔÚÂß¼ÉÏ£¬ÕâÖÖ·½·¨ËƺõÓÐЩ²»ºÏÀí¡£
¡¡¡¡±¾ÎĽ«½éÉÜÒ»ÖÖ×Ô¶¯Éú³ÉÃÜÔ¿µÄ¼¼Êõ£¬¿ÉÒÔʹÓÃ×Ô¶¯Éú³ÉµÄÃÜÔ¿¶ÔÓû§Ìá½»µÄÃÜÂëÃ÷ÎļÓÃÜ£¬Ê¹Âß¼¸ü¼ÓºÏÀíһЩ¡£
¡¡¡¡±¾Àý£¬¼ÙÉèÉú³ÉµÄÃÜԿΪ512λ¡£´úÂëÈçÏ¡£
1 £¼!--keygen.php:×Ô¶¯Éú³ÉÃÜÔ¿------------------------------------£¾ 2 £¼?php 3 4 //×Ô¶¯Éú³É³¤¶ÈΪ$lenµÄÃÜÔ¿ 5 function generate_key($len) 6 { 7 $lowerbound = 35 ; 8 $upperbound = 96 ; 9 $strMyKey = ""; 10 11 for($i=1;$i<=$len;$i++) 12 { 13 $rnd=rand(0,100); //²úÉúËæ»úÊý 14 $k = (($upperbound - $lowerbound) + 1) * $rnd + $lowerbound; 15 $strMyKey=$strMyKey.$k; 16 } 17 return $strMyKey; 18 } 19 20 //½«ÃÜԿдÈëÎļþ$file_name 21 function write_key($key,$file_name) 22 { 23 $filename="C:/key.txt"; 24 $key=generate_key($key,512); 25 26 //ʹÓÃÌí¼Óģʽ´ò¿ª$filename£¬ÎļþÖ¸Õ뽫»áÔÚÎļþµÄĩβ 27 if(!$handle=fopen($filename,'w')) 28 { 29 print"²»ÄÜ´ò¿ªÎļþ$filename"; 30 exit; 31 } 32 33 //½«$keyдÈëµ½ÎÒÃÇ´ò¿ªµÄÎļþÖС£ 34 if(!fwrite($handle,$key)) 35 { 36 print"²»ÄÜдÈëµ½Îļþ$filename"; 37 exit; 38 } 39 fclose($handle); 40 } 41 42 //¶ÁÈ¡ÃÜÔ¿ÎļþÖеÄÃÜÔ¿ 43 function get_key($file_name) 44 { 45 //´ò¿ªÎļþ 46 $fp = fopen ($file_name, "r"); 47 $result=""; 48 //ÖðÐжÁÈ¡ 49 while (!feof($fp)) 50 { 51 $buffer = fgets($fp, 4096); 52 $result=$result.$buffer; 53 } 54 return $result; 55 } 56 57 ///* 58 $KeyLocation = "C:/key.txt"; //±£´æÃÜÔ¿µÄÎļþ 59 $key="123456"; 60 write_key($key,$KeyLocation); 61 echo get_key($KeyLocation); 62 //*/ 63 ?£¾ ¡¡¡¡´úÂë°üÀ¨3¸öº¯Êý¡£
¡¡¡¡¡¤generate_key($len):×Ô¶¯Éú³É³¤¶ÈΪ$lenµÄÃÜÔ¿
¡¡¡¡¡¤write_key($key,$file_name):½«ÃÜԿдÈëÎļþ$file_name
¡¡¡¡¡¤get_key($file_name):¶ÁÈ¡ÃÜÔ¿Îļþ$file_nameÖеÄÃÜÔ¿Öµ
¡¡¡¡ÔÚʹÓÃʱ£¬µ±Óû§µÚÒ»´ÎµÇ¼ϵͳʱ£¬×Ô¶¯ÎªÆäÉú³ÉÃÜÔ¿Öµ£¬¶ÔÓÚÕâ¸öÃÜÔ¿Öµ£¬¿ÉÒÔÓÐÁ½ÖÖ·½Ê½À´´¦Àí¡£
¡¡¡¡(1)½«Æä´æÈëÊý¾Ý¿âµÄij¸ö×Ö¶ÎÖУ¬ÕâÖÖ·½·¨µÄȱµãÊÇÃÜÔ¿ÔÚÊý¾Ý¿âÖеݲȫÐÔÎÞ·¨µÃµ½±£Ö¤;
¡¡¡¡(2)½«Õâ¸öÃÜÔ¿±£´æÔÚÓû§±¾µØµÄÎļþÖУ¬ÕâÑù¾Í¿ÉÒÔ±ÜÃâÃÜÔ¿±»±ðÈË»ñÈ¡£¬µ«ÕâÖÖ·½Ê½µÄȱµãÊÇ£¬µ±Óû§Ê¹ÓÃÆäËû»úÆ÷·ÃÎÊϵͳʱ£¬¾ÍÎÞ·¨µÇ¼¡£
¡¡¡¡±¾ÀýÖУ¬½«Ê¹ÓõÚ2ÖÖ·½Ê½¡£
¡¡¡¡¾ßÌ嵨£¬ÉÏÃæ´úÂëµÚ11¡«18ÐÐͨ¹ýÉú³ÉËæ»úÊýµÄ·½Ê½À´²»¶ÏÉú³ÉÃÜÔ¿£¬²¢Í¨¹ýÒ»¸ö¼ÆËãÀ´ÔöÇ¿Æä¸´ÔÓÐÔ¡£ÆäÖеÄlowerboundºÍupperboundµÄÊýÖµÆäʵ¾ÍÊÇÄãÏëʹÓÃÀ´¼ÓÃܵÄASCII×Ö·û·¶Î§¡£ÏÂÃæÊÇÉú³ÉµÄÒ»¸öÃÜÔ¿ÎļþʾÀý¡£
¡¡¡¡208123915925183361116049369344372701567721435181102718332639307390344373445407
¡¡¡¡524316475863232913993383189547474747394154915312639841226741894189965623523913
¡¡¡¡011164730113445201935692839710274127251577929493941487145611337531549110895367
¡¡¡¡593586318332391170941272701152344371709270125776235313540032267139933835677407
¡¡¡¡617384135696111239130732949469623520815987524358635491542913374933524334454251
¡¡¡¡400327015367133759324537171709152357391089524342514685239122673135531363151191
¡¡¡¡833412771743139654¡
¡¡¡¡×îºó£¬ÐèÒª°ÑÃÜÔ¿±£´æÔÚ·þÎñÆ÷ÉÏÒ»¸ö°²È«µÄµØ·½£¬È»ºó¾Í¿ÉÒÔÀûÓÃÆäºÍÖîÈçXORÕâÑùµÄ¼ÓÃÜËã·¨À´¶ÔÓû§ÐÅÏ¢½øÐмÓÃÜ/½âÃÜÁË¡£ÈçºÎÔÚÉÏÒ»²¿·Ö½éÉܵÄXORÖÐʹÓÃÕâ¸öÃÜÔ¿·Ç³£¼òµ¥£¬²»ÔÙÏêÊö¡£
|