¡¡¡¡±¾ÎĽ«½éÉÜÒ»¸ö¼òµ¥Ò×ÓõļÓÃÜ/½âÃÜËã·¨:ʹÓÃÒì»ò(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ÖÐʹÓÃÕâ¸öÃÜÔ¿·Ç³£¼òµ¥£¬²»ÔÙÏêÊö¡£