日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 學院 > 邏輯算法 > 正文

在PHP+MySQL應用中使用XOR運算加密算法

2024-09-08 23:18:44
字體:
來源:轉載
供稿:網友

最大的網站源碼資源下載站,

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

  xor算法原理

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

  從各種替換法運算的特點看,異或運算最適合用于簡易加解密運算,這種方法的原理是:當一個數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行分別調用加密函數生成密文并輸出;反過來,又在第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)將其存入數據庫的某個字段中,這種方法的缺點是密鑰在數據庫中的安全性無法得到保證;

  (2)將這個密鑰保存在用戶本地的文件中,這樣就可以避免密鑰被別人獲取,但這種方式的缺點是,當用戶使用其他機器訪問系統時,就無法登錄。

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

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

  208123915925183361116049369344372701567721435181102718332639307390344373445407

  524316475863232913993383189547474747394154915312639841226741894189965623523913

  011164730113445201935692839710274127251577929493941487145611337531549110895367

  593586318332391170941272701152344371709270125776235313540032267139933835677407

  617384135696111239130732949469623520815987524358635491542913374933524334454251

  400327015367133759324537171709152357391089524342514685239122673135531363151191

  833412771743139654…

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

  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
av中文在线播放| 日韩欧美国产不卡| 久精品在线观看| 欧美日韩国产高清一区| 国产一级免费| 欧美日韩激情一区二区三区| 99在线精品视频免费观看20| 国产伦精品免费视频| 欧美日韩精品中文字幕| 一区二区在线高清视频| 国产一级粉嫩xxxx| 中文字幕亚洲在| 色综合天天综合网天天狠天天 | 91精品观看| 日韩欧美色综合| 欧美三级中文字幕在线观看| 国产高清在线视频| 亚洲高清在线观看一区| 久久久久久久久99精品| 久久精品在线观看| 国产三级视频网站| 欧美久久久久久蜜桃| 久久精品国产成人一区二区三区| 中文字幕国产欧美| 日韩1区在线| 欧美区高清在线| 中文字幕亚洲视频| 午夜av一区| 精品无人国产偷自产在线| 91精品国产乱码久久蜜臀| 99国产一区| 国产视频1区| 欧美日韩夫妻久久| av一区在线| 中文字幕在线国产| 亚洲小说春色综合另类电影| 日韩在线中文| 亚洲免费在线观看av| 久久久久蜜桃| 精品日韩视频在线观看| 欧美日韩亚洲综合在线| 亚洲小说春色综合另类网蜜桃| 美女在线视频一区| 国产一卡2卡3卡四卡网站| 最近中文字幕第一页| 色综合久久88色综合天天免费| 精品国产99久久久久久| 午夜高潮免费视频| 精品午夜av| 日韩精品高清不卡| 一区二区三区精品久久久| 欧美一级二级三级区| 欧美日韩国产不卡| 欧美日韩国产中文精品字幕自在自线 | 精品极品三级久久久久| 欧美激情一区二区三区在线| 欧美自拍一区| 欧美日韩在线不卡一区| 蜜桃精品视频| 中文字幕在线日韩| а√天堂8资源中文在线| 在线看的av| 精品国产网站在线观看| 中文字幕久久精品| 欧美日韩国产一区| 欧美日韩视频免费看| 日韩欧美一二三| 欧美一级免费在线观看| 日本不卡免费高清视频| 亚洲成人7777| 中文字幕2020第一页| 欧美日韩亚洲国产综合| 视频一区日韩| 99精品一级欧美片免费播放| 国产网站av| 91精品国产欧美日韩| 国产亚洲欧美中文| 亚洲一级特黄| 色综合影院在线| 日韩欧美国产一二三区| 国产三级在线| 中文字幕亚洲乱码| 日韩视频在线免费播放| 91精品国产高清91久久久久久| 国产一区久久久| 在线看av的网址| 久久婷婷亚洲| 蜜臀91精品国产高清在线观看| 国产视频2区| 国产乱国产乱老熟300| 五月综合激情日本mⅴ| 久久中文免费视频| 欧美日韩精品欧美日韩精品 | 99色在线视频| 日韩精品视频免费| 国产欧美日韩久久| 免费视频久久| 精品九九久久| 亚洲福利精品视频| 欧美日韩国产中文| 日韩av一区二区在线| 久草亚洲一区| 国产高清不卡av| 国产日韩1区| 国产一区在线不卡| 精品久久香蕉国产线看观看gif| 最近中文av字幕在线中文| 精品国产999| 精品国产99久久久久久| 免费网站看黄yyy222| 日韩高清不卡| 欧美日韩在线视频免费观看| 欧美日韩亚洲第一| 国产一区深夜福利| 婷婷中文字幕一区| 免费视频最近日韩| 国产午夜精品视频| 日韩一二三四区| 欧美日韩国产片| 一级片免费网站| 人人做人人澡人人爽欧美| 久久久精品网| 国产福利一区在线观看| 国产欧美日韩综合| 国产在线不卡一区| 中文字幕第一页在线| 精品网站999www| 欧美日韩国产综合视频在线观看| 亚洲天堂国产视频| 日韩欧美99| 久久精品电影| 亚洲一二三不卡| 午夜国产欧美理论在线播放| 日韩一级免费视频| 中文字幕在线观看网址| 中文字幕国产视频| 一区二区日韩免费看| av一级在线| 午夜视频在线观看一区| 免费网站看黄yyy222| 国产日韩精品在线观看| 国产欧美综合在线观看第十页| 日韩精品在线免费观看视频| 色猫猫国产区一区二在线视频 | 亚洲第一视频| 国产亚洲一区字幕| 欧美啪啪一区| 中文字幕亚洲国产| 亚洲国产专区| 亚洲午夜91| 精品久久久精品| 中文字幕在线观看亚洲| 中文在线不卡视频| 欧美在线中文字幕| av中文天堂在线| 日韩欧美在线影院| 色妇色综合久久夜夜| 日韩精品大片| av中文资源在线| 视频一区中文字幕国产| av高清一区| 久久精品国产成人一区二区三区| 亚洲国产福利| 亚洲第一网中文字幕| 91精品国产经典在线观看| 日韩免费看网站| 国产亚洲污的网站| 中文字幕五月欧美| 91精品国产经典在线观看| 91精选在线| 久久 天天综合| 免费在线播放av| 欧美三级日韩三级| 在线中文免费视频| 91精品国产色综合久久不卡蜜臀 | 欧洲精品二区| 一区二区视频在线观看免费的| 国产一级片在线播放| 欧美熟妇乱码在线一区| 亚洲a级在线播放观看| 欧美日韩国产91| 国产日韩精品电影| 一区二区三区精品在线观看| 日韩.欧美.亚洲| 欧美一卡2卡3卡4卡| 免费精品国产自产拍在| 一区二区三区精品在线| 中文字幕亚洲区| 亚洲va久久久噜噜噜久久| 国产日韩精品在线看| 日韩欧美国产亚洲| 欧美日韩综合不卡| 黄色片网站在线| 免费视频中文字幕| 日韩国产欧美| 亚洲日产av中文字幕| 中文字幕亚洲乱码| 日韩欧美亚洲日产国| 欧美xxxx中国| 亚洲大胆人体av| 欧美日韩视频网站| av免费不卡国产观看| 91九色在线看| 国产95在线|亚洲| 欧美性生交大片免费| 一区二区三区在线播放视频| 欧美高清一级片在线| 精品国产乱码一区二区| 中文在线视频观看| 国产一卡二卡3卡4卡四卡在线 | 91精品国产91久久久久| 中文字幕国产视频| 日韩欧美一级在线播放| 中文字幕国产视频| 亚洲理论中文字幕| 在线视频不卡一区二区| 中文字幕第一页在线播放| 高清一区二区| 国产视频aaa| 一区二区不卡视频在线观看| 在线观看一区| 91麻豆精品在线| 精品999视频| 欧美日韩午夜在线视频| 亚洲日本精品视频| 亚洲v中文字幕| 精品久久久久久综合日本欧美| 精人妻一区二区三区| 日韩 欧美 综合| 亚洲综合在线不卡| 中文字幕 日韩 欧美| 久久福利视频一区二区| 久久久水蜜桃| 亚洲素人一区二区| 精品久久人人做人人爽| 国产色在线 com| 在线视频1区2区| 在线视频日韩欧美| 亚洲专区一区| av免费在线观看网址| 日韩精品在线免费观看视频| 日韩在线不卡一区| 国产欧美久久久久久久久| 伊人中文字幕在线观看| 日韩亚洲一区中文字幕| 国产欧美综合在线| 日韩欧美一二三四区| 国产欧美日韩亚州综合| 国产日韩精品在线看| 不卡福利视频| 欧美日韩视频在线| 综合图区亚洲白拍在线 | 欧美亚洲国产日韩| 中文字幕日韩在线视频| 欧美日韩性视频一区二区三区| 黄色片免费在线| 亚洲一区中文在线| 欧美亚洲国产免费| 欧美日韩亚洲天堂| 欧美日韩三级一区| 久久久精品国产99久久精品芒果| 亚洲中文字幕一区| 午夜国产视频| 精品成人久久av| 中文字幕国产亚洲| 1区2区在线| 午夜亚洲一区| 中文字幕精品视频在线| 欧美高清视频一区二区三区| 一区二区欧美国产| 中文不卡在线| 中文字幕日韩免费视频| 欧美日韩免费高清| 中文字幕在线精品| 欧美日韩在线视频一区| 欧美日韩精品中文字幕| 亚洲人线精品午夜| 精品一二三区视频| 国产欧美日韩综合精品| www中文字幕| 视频在线一区二区| 日本亚洲视频在线| 91精品在线看V| 亚洲欧洲综合另类| 一区二区三区精品99久久| 成人精品视频一区| 日本啊v在线| 免费在线视频一区二区| 日韩在线视频免费观看| 日韩不卡一二区| 91精品国产91久久久久青草| 欧美日韩在线精品成人综合网| 久久久另类综合| 日韩精品视频免费| 亚洲经典中文字幕| 婷婷中文字幕综合| 日韩视频在线一区二区三区| 日韩视频一区二区在线观看| 午夜伊人狠狠久久| 国内激情久久| 亚洲综合日韩| 日韩欧美一级在线播放| 国产乱码在线观看| 91精品国产网站| 欧美日韩国产高清一区| 日韩在线二区| 国产一级免费看| 日韩中文字幕久久| 亚洲国产午夜精品| 亚亚洲欧洲精品| 国产高清视频一区二区| av手机天堂| 欧美一级在线观看| 国产免费永久在线观看| 日韩三级视频在线| 成人h视频在线观看| 玖玖在线免费视频| 内射国产内射夫妻免费频道| 中文字幕精品亚洲| 久久99精品国产| 午夜一区二区三区视频| 亚洲一区不卡在线| 日本国产在线视频| 国产欧美日韩不卡免费| 国产在线看一区| 91精品久久久久久久久| 精品国产乱码久久久久久蜜臀| 国产欧美综合视频| 国产在成人精品线拍偷自揄拍| 黄色一区二区在线| 红桃视频国产一区| 91精品国产色综合久久不卡蜜臀| 国产欧美久久久精品免费| 欧美久久久精品| 91精品久久久久久蜜臀| 国产区高清在线| 一区二区三区在线|网站| 91精品国产丝袜白色高跟鞋| 日韩在线精品| 亚洲第一网中文字幕| 欧美日韩在线不卡一区| 黄色精品在线观看| 日韩在线不卡| 国产日韩三级| 日韩不卡一二三区| 亚洲黄页一区| 日韩亚洲欧美中文三级| 日韩福利视频导航| 免费精品国产自产拍观看| av一区在线观看| 精品一区二区三区中文字幕| 日韩欧美国产一二三区| 国产在线视频不卡| 国产偷国产偷亚洲清高网站 | 日韩在线小视频| 精品九九久久| 国产极品嫩模在线视频一区 | 日韩精品在线第一页| 高清中文字幕在线| 中文国产字幕在线观看| 日韩在线视频一区二区三区| 欧美日韩综合色| 精品一二线国产| 欧美日韩国产中文精品字幕自在自线| 亚洲高清中文字幕| av免费网站在线| 中文字幕视频在线免费欧美日韩综合在线看| 欧美日韩在线不卡视频| 91国内精品在线视频| 久久婷婷中文字幕| 亚洲国产福利视频| www高清在线视频日韩欧美| 精品人妻一区二区三区视频| 欧美中文字幕| 99日韩精品| 91麻豆视频网站| 中文字幕乱码在线| 日韩中文首页| 欧美日韩精品是欧美日韩精品| 国产三级在线| 91精品啪在线观看国产60岁| 日韩一级免费视频| 国产黄在线观看| 日韩色在线观看| 精品日韩视频| 午夜一区二区三区| 国产亚洲人成a一在线v站| 欧美日韩亚洲91| 亚洲一区激情| 亚洲免费视频一区| 欧美一级在线免费| 中文字幕日韩精品在线| 91精品国产91久久久久久不卡| 欧美日韩在线视频免费观看| 欧美熟妇乱码在线一区| 久久婷婷亚洲| 激情婷婷亚洲| www.狠狠| 国产欧美一级| 91久久精品国产|