亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學(xué)院 > 邏輯算法 > 正文

在PHP+MySQL應(yīng)用中使用XOR運(yùn)算加密算法

2024-09-08 23:18:44
字體:
供稿:網(wǎng)友

最大的網(wǎng)站源碼資源下載站,

【摘 要】 上一部分介紹了如何使用xor運(yùn)算進(jìn)行加密/解密的原理,本節(jié)將使用其加密用戶的登錄信息。根據(jù)上一小節(jié)介紹的xor加密算法的原理,不難寫出以下的加密解密函數(shù)。首先列出加密算法。
本文將介紹一個(gè)簡單易用的加密/解密算法:使用異或(xor)運(yùn)算。本算法原理簡單,旨在使讀者對(duì)信息的加密/解密有一個(gè)更加直觀的印象。

  xor算法原理

  從加密的主要方法看,換位法過于簡單,特別是對(duì)于數(shù)據(jù)量少的情況很容易由密文猜出明文,而替換法不失為一種行之有效的簡易算法。

  從各種替換法運(yùn)算的特點(diǎn)看,異或運(yùn)算最適合用于簡易加解密運(yùn)算,這種方法的原理是:當(dāng)一個(gè)數(shù)a和另一個(gè)數(shù)b進(jìn)行異或運(yùn)算會(huì)生成另一個(gè)數(shù)c,如果再將c和b進(jìn)行異或運(yùn)算則c又會(huì)還原為a。

  相對(duì)于其他的簡易加密算法,xor算法的優(yōu)點(diǎn)如下。

  (1)算法簡單,對(duì)于高級(jí)語言很容易能實(shí)現(xiàn)。

  (2)速度快,可以在任何時(shí)候、任何地方使用。

  (3)對(duì)任何字符都是有效的,不像有些簡易加密算法,只對(duì)西文字符有效,對(duì)中文加密后再解密無法還原為原來的字符。

  xor算法實(shí)現(xiàn)

  上一部分介紹了如何使用xor運(yùn)算進(jìn)行加密/解密的原理,本節(jié)將使用其加密用戶的登錄信息。根據(jù)上一小節(jié)介紹的xor加密算法的原理,不難寫出以下的加密解密函數(shù)。首先列出加密算法。

 

1 <!--encrypy_xor:簡單使用xor運(yùn)算的加密函數(shù)----------------------->
2 <?php
3 //加密函數(shù)
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行定義了加密函數(shù)myencrypt(),輸入?yún)?shù)$string為明文,而$key為密鑰;輸出為使用$key作為密鑰并使用xor加密算法產(chǎn)生的密文。

  第6~12行的外層for循環(huán)對(duì)明文字符串的每一個(gè)字符進(jìn)行循環(huán),而內(nèi)層的for循環(huán)(第8~11行)對(duì)明文的每一字符循環(huán)與密鑰的每一位做異或運(yùn)算。其原理已經(jīng)在上一小節(jié)中介紹,不再重述。

  同樣,與加密函數(shù)類似,可以寫出下面的解密函數(shù)。


1 //解密函數(shù)
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行定義了解密函數(shù)mydecrypt (),輸入?yún)?shù)$string為密文,而$key為密鑰;輸出為使用$key作為密鑰并使用xor解密算法產(chǎn)生的明文。

  下面,通過一個(gè)應(yīng)用示例來進(jìn)一步說明加密函數(shù)的功能。


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行首先定義了一個(gè)明文$my_password,然后在第4行定義密鑰$my_key。

  第5、6行分別調(diào)用加密函數(shù)生成密文并輸出;反過來,又在第7、8行將密文解密。

  上面示例的運(yùn)行結(jié)果如下。

  my_password = chair

  my_password_en = rypxc

  my_password_de = chair

  用xor算法實(shí)現(xiàn)身份驗(yàn)證

  上兩部分分別介紹了使用xor運(yùn)算進(jìn)行信息加密/解密的原理和實(shí)現(xiàn),下面,將使用這一方法來對(duì)用戶的登錄密碼進(jìn)行加密。本例中,為了保護(hù)用戶的密碼,系統(tǒng)想要達(dá)到的目的如下。

  ·在用戶注冊(cè)時(shí),用戶需要添寫用戶密碼表單。

  ·除用戶本人之外,其他任何人都無法獲取其密碼信息,包括系統(tǒng)設(shè)計(jì)者和數(shù)據(jù)庫管理員。

  ·系統(tǒng)能根據(jù)用戶輸入的密碼驗(yàn)證用戶的合法性。

  為了達(dá)到以上目的,使用xor算法時(shí)可以選擇用戶名作為明文,而密鑰是用戶自定義的密碼,然后將加密后的用戶名存儲(chǔ)在數(shù)據(jù)庫中。

  另外,在用戶登錄的時(shí)候,有以下兩種方式來驗(yàn)證合法用戶。

  (1)根據(jù)其提交的用戶名(明文)和密碼(密鑰)信息重新加密,并使用加密后的信息與數(shù)據(jù)庫中存儲(chǔ)的密碼信息進(jìn)行比較,如果相等,則用戶合法,否則,為非法用戶。

  (2)根據(jù)數(shù)據(jù)庫中存儲(chǔ)的密碼信息(明文)和用戶輸入的密碼(密鑰)信息進(jìn)行解密,并把加密后的信息與用戶提交的用戶名進(jìn)行比較,如果相等,則用戶合法,否則,為非法用戶。

  兩種方式都可以實(shí)現(xiàn)第3個(gè)目的,本例,將采用第2種方式。本例的實(shí)現(xiàn)代碼可在18.4.1節(jié)“用戶登錄”和18.4.2節(jié)“檢查用戶”的實(shí)現(xiàn)基礎(chǔ)之上實(shí)現(xiàn),其中“用戶登錄”頁面無需變化,“檢查用戶”的實(shí)現(xiàn)參考如下。


1 <?php
2 session_start(); //裝載session庫,一定要放在首行
3 $user_name=$_post["user_name"];
4 session_register("user_name"); //注冊(cè)$user_name變量,注意沒有$符號(hào)
5
6 require_once("sys_conf.inc"); //系統(tǒng)配置文件,包含數(shù)據(jù)庫配置信息
7 require_once("encrypy_xor.php"); //包含xor加密函數(shù)文件
8
9 //連接數(shù)據(jù)庫
10 $link_id=mysql_connect($dbhost,$dbuser,$dbpwd);
11 mysql_select_db($dbname); //選擇數(shù)據(jù)庫my_chat
12
13 //查詢是否存在登錄用戶信息
14 $str="select name,password from user where name ='$user_name'";
15 $result=mysql_query($str,$link_id); //執(zhí)行查詢
16 @$rows=mysql_num_rows($result); //取得查詢結(jié)果的記錄筆數(shù)
17 $user_name=$_session["user_name"];
18 $password=$_post["password"];
19 $password_en=myencrypt($user_name,$password); //加密用戶信息
20
21 //對(duì)于老用戶
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); //執(zhí)行查詢
32 require("main.php"); //轉(zhuǎn)到聊天頁面
33 }
34 //密碼輸入錯(cuò)誤
35 else
36 {
37 require("relogin.php");
38 }
39 }
40 //對(duì)于新用戶,將其信息寫入數(shù)據(jù)庫
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); //執(zhí)行查詢
45 require("main.php"); //轉(zhuǎn)到聊天頁面
46 }
47 //關(guān)閉數(shù)據(jù)庫
48 mysql_close($link_id);
49 ?>

  第7行引入了加密函數(shù)文件encrypy_xor.php,包括上一小節(jié)介紹的兩個(gè)函數(shù)。

  第19行,使用用戶提交的用戶名和密碼得到加密后的密碼值,并且對(duì)于新用戶,在第44行將這個(gè)加密后的值存儲(chǔ)在數(shù)據(jù)庫中。

  另外,對(duì)于老用戶,在第24獲取數(shù)據(jù)庫中用戶名和加密后的密碼信息,并在25行利用這兩個(gè)值進(jìn)行解密,然后在第28行通過比較解密后的值與用戶提交的用戶名信息來檢查用戶的合法性。

  自動(dòng)生成密鑰

  上一部分介紹了如何使用xor加密算法進(jìn)行對(duì)用戶信息的加密,其中,用戶所輸入的口令信息實(shí)際上成為了加密算法中的密鑰,而用戶名作為明文使用,雖然這能很好地完成功能,但是在邏輯上,這種方法似乎有些不合理。

  本文將介紹一種自動(dòng)生成密鑰的技術(shù),可以使用自動(dòng)生成的密鑰對(duì)用戶提交的密碼明文加密,使邏輯更加合理一些。

  本例,假設(shè)生成的密鑰為512位。代碼如下。

 

1 <!--keygen.php:自動(dòng)生成密鑰------------------------------------>
2 <?php
3
4 //自動(dòng)生成長度為$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); //產(chǎn)生隨機(jī)數(shù)
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,文件指針將會(huì)在文件的末尾
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個(gè)函數(shù)。

  ·generate_key($len):自動(dòng)生成長度為$len的密鑰

  ·write_key($key,$file_name):將密鑰寫入文件$file_name

  ·get_key($file_name):讀取密鑰文件$file_name中的密鑰值

  在使用時(shí),當(dāng)用戶第一次登錄系統(tǒng)時(shí),自動(dòng)為其生成密鑰值,對(duì)于這個(gè)密鑰值,可以有兩種方式來處理。

  (1)將其存入數(shù)據(jù)庫的某個(gè)字段中,這種方法的缺點(diǎn)是密鑰在數(shù)據(jù)庫中的安全性無法得到保證;

  (2)將這個(gè)密鑰保存在用戶本地的文件中,這樣就可以避免密鑰被別人獲取,但這種方式的缺點(diǎn)是,當(dāng)用戶使用其他機(jī)器訪問系統(tǒng)時(shí),就無法登錄。

  本例中,將使用第2種方式。

  具體地,上面代碼第11~18行通過生成隨機(jī)數(shù)的方式來不斷生成密鑰,并通過一個(gè)計(jì)算來增強(qiáng)其復(fù)雜性。其中的lowerbound和upperbound的數(shù)值其實(shí)就是你想使用來加密的ascii字符范圍。下面是生成的一個(gè)密鑰文件示例。

  208123915925183361116049369344372701567721435181102718332639307390344373445407

  524316475863232913993383189547474747394154915312639841226741894189965623523913

  011164730113445201935692839710274127251577929493941487145611337531549110895367

  593586318332391170941272701152344371709270125776235313540032267139933835677407

  617384135696111239130732949469623520815987524358635491542913374933524334454251

  400327015367133759324537171709152357391089524342514685239122673135531363151191

  833412771743139654…

  最后,需要把密鑰保存在服務(wù)器上一個(gè)安全的地方,然后就可以利用其和諸如xor這樣的加密算法來對(duì)用戶信息進(jìn)行加密/解密了。如何在上一部分介紹的xor中使用這個(gè)密鑰非常簡單,不再詳述。

  

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
中文字幕中文在线| 波多野结衣在线影院| 一级黄色片国产| 成视频免费观看在线看| 日韩欧美成人网| 蜜臀久久99精品久久久久宅男| 国产资源在线观看入口av| 天天草天天干| 欧美日韩免费观看一区| 人人超碰91尤物精品国产| 国产一区二区三区免费不卡| 精品人妻伦一二三区久久| 国产亚洲高清在线观看| 成人羞羞网站入口| 国产福利一区二区在线精品| 成人免费福利在线| 亚洲a级黄色片| 日本精品一区二区三区不卡无字幕| 精品国产电影一区二区| 欧美bbbxxxxx| 最新欧美电影| 亚洲av无码成人精品国产| 99久热在线精品996热是什么| 激情欧美一区| 暧暧视频在线免费观看| 国内精品免费视频| 亚洲一区二区福利视频| 亚洲国产综合久久精品小蝴蝶| 亚洲全黄一级网站| 国产免费一区二区三区香蕉精| 精品日韩视频在线观看| 3d性欧美动漫精品xxxx软件| 婷婷成人av| 欧美一区综合| 4hu四虎永久网址| 在线三级av| 中文字幕校园春色| 国产精品夫妻激情| 国产91沈先生在线播放| 欧洲天堂在线观看| 青娱乐精品视频在线| 九九99九九精彩| 日韩大片免费观看视频播放| 欧美日韩色图| 午夜色在线观看| 欧美三级免费看| 99在线观看精品视频| fc2在线中文字幕| 四虎精品一区二区永久在线观看| 精品一区二区三区四区| 老司机久久精品| 久久久久亚洲AV成人| 可以在线观看的av网站| 亚洲国产精品成人久久蜜臀| 日本一二三区在线| 精品亚洲欧美一区| 国产黄色一级电影| 天天舔天天干天天操| а√天堂中文在线资源bt在线| 亚洲精品免费在线看| 国产日韩精品视频一区二区三区| 久久综合狠狠综合久久激情| www国产亚洲精品| 在线一区视频观看| 亚洲精品美女网站| 国产三级电影在线观看| 亚洲精品成人少妇| 亚洲天堂av中文字幕| 亚洲一二三在线| 日日天天狠狠| 国产精品三区四区| 日韩精品久久久久久久电影99爱| 国产精品一国产精品k频道56| 久久久综合亚洲91久久98| 日韩欧美高清在线视频| 日韩av黄色| 精品久久免费看| 99国产高清| 99精品视频精品精品视频| 成人黄色片视频网站| 国产日韩欧美一区二区三区综合| 日韩久久久久久久久久久| 电影天堂爱爱爱爱| 久久机热这里只有精品| 欧美三级伦理在线| 日韩中文字幕精品| 久久国产婷婷国产香蕉| 日本老熟妇毛茸茸| 久久久久久久久久一区二区三区| 黄色美女网站在线观看| 欧美精品做受xxx性少妇| 亚洲一区免费视频| аⅴ天堂中文在线网| 国产尤物久久久| 亚洲AV无码片久久精品| 国产精品夜间视频香蕉| av一区二区三区免费观看| 色狠狠综合天天综合综合| 亚洲视频电影图片偷拍一区| 免费观看91视频大全| 欧美精选一区二区| 精品sm在线观看| yellow网站在线观看| 精品国产一区二区三区成人影院| 国产精品久久久久久久免费软件| 涩涩网站在线看| 蜜桃一区二区三区在线| 国产95在线|亚洲| 日韩国产一区二区| 在线免费日韩片| 91chinesevideo永久地址| 另类一区二区| 日韩欧美中文字幕在线观看| 日韩超碰人人爽人人做人人添| 亚洲欧美激情视频在线观看一区二区三区| 99久久er热在这里只有精品66| 性欧美videos粗暴| 手机成人av在线| 在线播放日韩导航| 国产成人啪精品视频免费网| 青青久久av北条麻妃黑人| 一区二区三区激情视频| 国产精品99久久| 一本色道久久综合狠狠躁的番外| 欧美色大人视频| 免费成人直播| 成年人视频在线免费看| 欧美精品xx| 师生出轨h灌满了1v1| 奇米影视亚洲| 欧美性欧美巨大黑白大战| 国产suv精品一区二区68| 蜜臀精品久久久久久蜜臀| 蜜桃传媒一区二区三区| 欧美精品久久久久久久久46p| 欧美视频一二区| 青青草97国产精品免费观看| 国产精品丝袜久久久久久app| 一区二区在线影院| 一区二区三区丝袜| 亚洲国产日韩一级| 亚洲精品**不卡在线播he| 欧美狂猛xxxxx乱大交3| 国产一区二区三区高清视频| 99久久国产综合精品五月天喷水| 卡通动漫亚洲综合| 国产经典一区| 欧洲日韩成人av| 影音先锋男人看片资源站| 男女羞羞免费视频| 韩国女同性做爰三级| 久久久久久久久免费看无码| 激情一区二区三区| 中文字幕免费高| 黄色日韩精品| 无码人妻精品一区二区三区蜜桃91| 精品日韩中文字幕| 天堂在线中文网| 成人午夜电影小说| 伊人久久亚洲美女图片| 91精品国产99| 国产高清美女一级毛片久久| 超碰97在线播放| 日韩精品一区二区三区国语自制| 九色在线视频观看| 日韩精品电影一区二区| 欧美第一页浮力影院| 九色丨porny丨| 日韩激情一二三区| 成人天堂yy6080亚洲高清| 国产精选久久| 四虎永久精品在线| 黄页免费观看| 韩国成人在线视频| 成人高潮a毛片免费观看网站| av天堂永久资源网| 1024精品视频| 国产精品一级在线观看| 午夜爽爽爽男女免费观看| 国产.精品.日韩.另类.中文.在线.播放| 亚洲成人黄色av| 国产精品中文有码| 翔田千里一区二在线观看| 九九热这里只有| 久草在现在线| 欧美性生活大片免费观看网址| 国产麻豆一精品一av一免费| 成人一二三四区| 亚洲精品视频二区| 情趣视频网站在线免费观看| 国产精成人品localhost| 国产又大又黄又粗的视频| 国产一区二区视频免费| 精品一区二区三区四区五区| 欧美日韩一区二区视频在线| 国产九色91| 成人免费黄色网页| 亚洲精品电影在线一区| 日本在线视频免费| 美女露出粉嫩尿囗让男人桶| 91麻豆精品国产综合久久久久久| 国产成人日日夜夜| 亚洲狠狠爱一区二区三区| 国产a级网站| 日本高清视频在线观看| 久久精品国产亚洲777| av激情在线| 激情综合五月婷婷| 久久久久亚洲av片无码下载蜜桃| 天堂在线免费视频| 口述被爽到呻吟高潮自述| 欧美日韩视频一区二区| 久久久午夜视频| 国产欧美一区二区三区网站| 欧美视频久久| 亚洲伊人伊成久久人综合网| 黄色大片中文字幕| √天堂中文在线| 国产精品色婷婷视频| 最新不卡av| 91久久偷偷做嫩草影院电| 精品日韩av| 国产精品日本欧美一区二区三区| 亚州av电影免费在线观看| 亚洲欧美另类久久久精品2019| 久久老司机精品视频| 8x8x国产| av在线免费在线观看| av网站免费在线| 欧美日韩高清一区二区不卡| 亚洲电影网站| 影音先锋可以看的网站| 捆绑凌虐一区二区三区| 秋霞成人午夜伦在线观看| 欧美黄色视屏| 久久精品成人| 我不卡一区二区| 亚洲情侣在线| 亚洲男人天堂av在线| 深田咏美在线x99av| av福利导福航大全在线播放| 老牛国内精品亚洲成av人片| 精品剧情v国产在线观看在线| 久久久久亚洲av无码麻豆| 91地址最新发布| 欧美国产第二页| 日韩av影视在线| 老司机凹凸av亚洲导航| 91麻豆免费视频| 一女被多男玩喷潮视频| 成人在线观看黄| 亚洲区自拍偷拍| 国产美女av一区二区三区| 99久久er| 久久精品人人做人人爽人人| 欧美又黄又嫩大片a级| 捆绑调教日本一区二区三区| 黑森林国产精品av| 一区二区三区四区久久| 亚洲成人1区| 熟女少妇一区二区三区| 白白色 亚洲乱淫| 中文字幕国产精品一区二区| av电影在线观看一区| 动漫av一区二区三区| 91精品91久久久中77777| 亚洲欧洲www| 亚洲欧美在线一区| 影音先锋男人资源在线| 八戒八戒神马在线电影| 亚洲999一在线观看www| 国产美女精品写真福利视频| 影音先锋2020色资源网| 欧美精品一区二区精品网| 欧美一级片在线播放| 精品国产www| 亚洲精品天堂成人片av在线播放| 嫩草影院一区二区三区| 欧美成人午夜剧场免费观看| 国产亚洲精品综合一区91| 凹凸国产熟女精品视频| 国产精品电影在线观看| 欧美三级在线视频| 精品国精品国产自在久国产应用| 免费一级a毛片夜夜看| 一区二区三区在线观看av| 午夜视频福利在线观看| 国产福利久久精品| 欧美乱大交xxxxx另类电影| 欧美国产小视频| 亚洲国产一成人久久精品| 日韩av资源站| 欧美日韩一区二区三区电影| av片免费播放| 国产精品免费网站在线观看| 盗摄精品av一区二区三区| 中文字幕精品视频在线| 日本韩国一区二区三区视频| 亚洲爱情岛论坛永久| 久久综合精品一区| 欧美成人性色生活仑片| 2020国内自拍视频| 日韩在线视频免费观看高清中文| 四虎成人在线观看| 欧美日韩精品免费在线观看视频| 中文字幕www| 国内精品国语自产拍在线观看| 国产精品水嫩水嫩| 无码人妻精品一区二区50| 久久频这里精品99香蕉| 欧美精品一区二区三区蜜臀| 欧美一区二区三区男人的天堂| 亚洲国产成人精品女人久久| 欧美成人三级在线视频| 国产精品1区在线| 久久av高潮av| 7788色淫网站小说| 欧美吻胸吃奶大尺度电影| 日韩精品视频三区| 四虎国产精品成人免费影视| 在线a免费看| 日韩乱码在线视频| 亚洲欧洲一区二区三区在线观看| 日韩手机在线| 亚洲高清av一区二区三区| 欧美卡一卡二| 天天摸天天舔天天操| 日韩精品免费在线视频观看|