九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

[優(yōu)秀畢業(yè)論文]安全網(wǎng)絡(luò)即時(shí)通信軟件的設(shè)計(jì)與實(shí)現(xiàn)

  • 資源ID:27804946       資源大?。?span id="24d9guoke414" class="font-tahoma">1.63MB        全文頁數(shù):45頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

[優(yōu)秀畢業(yè)論文]安全網(wǎng)絡(luò)即時(shí)通信軟件的設(shè)計(jì)與實(shí)現(xiàn)

本科畢業(yè)設(shè)計(jì)(2011屆)題 目安全網(wǎng)絡(luò)即時(shí)通信軟件的設(shè)計(jì)與實(shí)現(xiàn)學(xué) 院專 業(yè)班 級(jí)學(xué) 號(hào)學(xué)生姓名指導(dǎo)教師完成日期2011年6月誠 信 承 諾我謹(jǐn)在此承諾:本人所寫的畢業(yè)論文安全網(wǎng)絡(luò)即時(shí)通信軟件的設(shè)計(jì)與實(shí)現(xiàn)均系本人獨(dú)立完成,沒有抄襲行為,凡涉及其他作者的觀點(diǎn)和材料,均作了注釋,若有不實(shí),后果由本人承擔(dān)。 承諾人(簽名): 年 月 日本科畢業(yè)設(shè)計(jì)摘 要隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)突飛猛進(jìn)的發(fā)展,即時(shí)通信已成為目前互聯(lián)網(wǎng)上最為流行的通信方式,深受廣大網(wǎng)民的喜愛。無論是國內(nèi)的騰訊QQ還是微軟的MSN Messenger,都擁有相當(dāng)大的用戶群。即時(shí)通信軟件給人們帶來了極大的便利,使人們可以隨時(shí)隨地地和親朋好友進(jìn)行在線交流和溝通,它拉近了人與人之間的距離,豐富了人們的精神生活,正逐漸成為人們生活和工作中不可或缺的一部分。雖然即時(shí)通信軟件層出不窮,但是大部分免費(fèi)的即時(shí)通信軟件都缺少數(shù)據(jù)加密功能,存在著不容忽視的網(wǎng)絡(luò)安全隱患。本課題將利用現(xiàn)有的網(wǎng)絡(luò)通信技術(shù)、數(shù)據(jù)庫技術(shù)和信息安全技術(shù),設(shè)計(jì)并實(shí)現(xiàn)一個(gè)新的安全網(wǎng)絡(luò)即時(shí)通信系統(tǒng)。它在原有的即時(shí)通信系統(tǒng)的基礎(chǔ)上,使用DES加密算法對(duì)通信內(nèi)容進(jìn)行加密和解密,保證了數(shù)據(jù)通信的及時(shí)性和安全性,為人們提供了更加安全可靠的即時(shí)通信平臺(tái)。本系統(tǒng)采用三層C/S和P2P通信模型混合結(jié)構(gòu)設(shè)計(jì)系統(tǒng)構(gòu)架,在.NET開發(fā)環(huán)境下,使用C#語言進(jìn)行開發(fā),數(shù)據(jù)庫采用了SQL Server 2000。該即時(shí)通信軟件具備的主要功能包括用戶帳號(hào)申請(qǐng)、用戶登錄、添加好友、文字聊天、文件傳輸?shù)?。本系統(tǒng)使用便捷,用戶界面很有人性化,安全保密設(shè)置齊全,具有一定的使用價(jià)值。關(guān)鍵詞:即時(shí)通信、信息安全、DES算法、便捷本科畢業(yè)設(shè)計(jì)ABSTRACTAlong with the fast development of the computer networking technology, instant communication has become the most popular communication means on the Internet, and it is favored by the majority of Internet users. Whether domestic tencent QQ or Microsofts MSN Messenger, has considerable user group. Instant communication software has brought people great convenience that people can communicate with relatives and friends online whenever and wherever possible. It cuts down the distance between people and people and enrich peoples spiritual life, and it is becoming an indispensable part of peoples life and work.Although instant communication software emerges endlessly, but most free instant communication software lacks data encryption functions, so that it exists the networking danger hidden which cant be ignored. This subject will use the existing network communication technology, database technology and information security technology to design and implement a new safety networking instant communication system. Basing itself on the old instant communication system, it uses DES encryption algorithm to encrypt and decrypt the communication content, to ensure timeliness and security of the data communication, so that it provides people with a more secure and reliable instant communication platform.The system uses the three-layer C/S and P2P communication model composite structure to design system architecture, and use C # language to development system in .NET framework development environment. The database uses SQL Server 2000. The instant communication softwares main funtions include users account application, users logining, adding friends, wordage chatting, file transferring, etc. The system uses conveniently, and has a hommization user interface, and security setting is complete, so that it has a certain value.Key words: Instant Communication; Information Security; DES Algorithm; Convenient 目錄1引言11.1課題背景及選題意義11.2國內(nèi)外研究與應(yīng)用情況21.3研究目的22系統(tǒng)需求分析42.1需求分析42.2數(shù)據(jù)流圖53系統(tǒng)總體設(shè)計(jì)73.1系統(tǒng)整體架構(gòu)73.2服務(wù)器概要設(shè)計(jì)93.3客戶端概要設(shè)計(jì)93.4開發(fā)環(huán)境及開發(fā)工具93.4.1開發(fā)環(huán)境概述93.4.2C#語言簡(jiǎn)介113.4.3SQL Server 2000簡(jiǎn)介114系統(tǒng)詳細(xì)設(shè)計(jì)134.1數(shù)據(jù)庫設(shè)計(jì)134.2通信消息加密處理原理144.3通信協(xié)議設(shè)計(jì)184.3.1傳輸層協(xié)議184.3.2應(yīng)用層協(xié)議194.4系統(tǒng)主要模塊的實(shí)現(xiàn)214.4.1注冊(cè)登錄模塊的實(shí)現(xiàn)214.4.2添加好友模塊的實(shí)現(xiàn)224.4.3加密通信模塊的實(shí)現(xiàn)265系統(tǒng)測(cè)試與運(yùn)行315.1測(cè)試方案315.2測(cè)試結(jié)果326總結(jié)38致謝39參考文獻(xiàn)40 本科畢業(yè)設(shè)計(jì)1 引言1.1 課題背景及選題意義隨著計(jì)算機(jī)網(wǎng)絡(luò)的不斷發(fā)展,全世界的人們被緊密地聯(lián)系在了一起。方便快捷是互聯(lián)網(wǎng)具有的一大優(yōu)點(diǎn),因此人與人之間的交流也更多地在互聯(lián)網(wǎng)上進(jìn)行。在這樣的時(shí)代背景下,以簡(jiǎn)便、交互、快速為代表的即時(shí)通信軟件應(yīng)運(yùn)而生。即時(shí)通信(Instant Messenger,簡(jiǎn)稱IM)是一個(gè)終端連往一個(gè)即時(shí)通信網(wǎng)路的服務(wù)。很多即時(shí)通信服務(wù)具有presence awareness的特性顯示好友的名單、好友是否在線與是否可以和好友進(jìn)行通信等。以往網(wǎng)民通常會(huì)把即時(shí)通信看成是一個(gè)在網(wǎng)絡(luò)上尋找朋友并可以與之進(jìn)行交流的聊天工具。但是隨著即時(shí)通信軟件的功能和應(yīng)用的不斷豐富和完善,它使得用戶可以在互聯(lián)網(wǎng)上盡情地交談,包括文字聊天和文件傳輸?shù)?,它已?jīng)逐漸演變成一個(gè)綜合的桌面通信平臺(tái)。即時(shí)通信軟件以飛快的速度改變著人們的生活方式,無論從娛樂角度還是從商務(wù)角度來看,它在國內(nèi)外已經(jīng)成為了一種極具價(jià)值的通信工具,發(fā)揮著舉足輕重的作用,將成為人們?cè)诰W(wǎng)絡(luò)生活中不可或缺的一部分。如今即時(shí)通信軟件已成為信息傳遞最為廣泛的應(yīng)用工具之一,在因特網(wǎng)上比較受歡迎的即時(shí)通信服務(wù)有MSN Messenger、AOL Instant Messenger、Yahoo! Messenger、NET Messenger Service、Jabber、ICQ與QQ等。即時(shí)通信之所以深受人們的青睞,就在于它人性化的設(shè)計(jì)讓每個(gè)用戶都可以得心應(yīng)手地使用該軟件,讓用戶在第一時(shí)間內(nèi)得到信息的交流,在溝通中給用戶帶來了極大的滿足。隨著移動(dòng)和互聯(lián)網(wǎng)越來越深入地走進(jìn)生活,人們渴望在任何時(shí)間、任何地點(diǎn)將盡可能多的通信工具融合在互聯(lián)網(wǎng)同一個(gè)溝通環(huán)境下,實(shí)現(xiàn)各種通信工具的互補(bǔ)和整合。它讓網(wǎng)上的好友可以身臨其境地進(jìn)行面對(duì)面的聊天,使彼此之間有更加深入的了解。人們不再局限于單一的網(wǎng)上或網(wǎng)下的溝通,而是希望通過跨平臺(tái)、多終端的通信技術(shù)來實(shí)現(xiàn)一種集聲音、文字、圖像的低成本、高效率的通信服務(wù)。互聯(lián)網(wǎng)的出現(xiàn)連通了整個(gè)世界,而即時(shí)通信軟件的出現(xiàn)則進(jìn)一步拉近了互聯(lián)網(wǎng)上的每一位用戶的距離。因此,即時(shí)通信軟件深受人們的喜歡。目前大多數(shù)的即時(shí)通信軟件在設(shè)計(jì)的時(shí)候都考慮了可擴(kuò)展性,但卻沒有充分地考慮安全問題。幾乎所有免費(fèi)的在線即時(shí)通信軟件都缺乏加密功能,其中大多數(shù)都具備繞過傳統(tǒng)的企業(yè)防火墻的功能,為網(wǎng)絡(luò)管理帶來了很大的困難,這是一個(gè)很普遍的現(xiàn)象。為了保證通信內(nèi)容的保密性,我們很有必要采用一定的數(shù)據(jù)加密算法對(duì)通信內(nèi)容進(jìn)行加密。1.2 國內(nèi)外研究與應(yīng)用情況ICQ是最早應(yīng)用于互聯(lián)網(wǎng)的即時(shí)通信軟件,只經(jīng)過短短幾年的發(fā)展,它在行業(yè)內(nèi)的地位已是無人可以撼動(dòng)。最初的ICQ只有用戶列表和即時(shí)聊天兩個(gè)特性,但是一經(jīng)推出就受到了廣大網(wǎng)民的喜愛,6個(gè)月內(nèi)其注冊(cè)用戶迅速攀升至85萬,1998年它的用戶數(shù)量更是翻了10數(shù)倍,達(dá)到了1200萬人。ICQ的迅猛發(fā)展也令當(dāng)時(shí)的互聯(lián)網(wǎng)領(lǐng)頭羊Yahoo和在桌面軟件領(lǐng)域獨(dú)樹一幟的微軟找到了商機(jī),它們分別推出了Yahoo Messenger、MSN Messenger和曇花一現(xiàn)的MS Chat。MSN是微軟公司提供的internet服務(wù),始終致力于發(fā)掘用戶的潛能,幫助他們與所關(guān)心的人及信息緊密相連無論是基于手機(jī)、PDA等移動(dòng)智能終端,還是應(yīng)用PC、家庭媒體中心及其它信息家電,用戶都可以自在遨游于網(wǎng)絡(luò)世界,暢享全天候、全方位的互動(dòng)與溝通。它們改變了整個(gè)互聯(lián)網(wǎng)的交流,使之變得更加及時(shí)和方便。它深受商務(wù)人士的喜歡。當(dāng)ICQ風(fēng)靡一時(shí)的時(shí)候,在國內(nèi)也紛紛推出了各種仿ICQ的即時(shí)通信軟件,有騰訊QQ、新浪UC、網(wǎng)易泡泡等。騰訊無疑是國內(nèi)即時(shí)通信市場(chǎng)的霸主,自從99年進(jìn)入即時(shí)通信領(lǐng)域并迅速占領(lǐng)市場(chǎng)之后,其在國內(nèi)用戶數(shù)量始終高居榜首,即使近幾年面對(duì)微軟MSN的強(qiáng)大攻勢(shì),騰訊QQ的市場(chǎng)占有率依然穩(wěn)步增長(zhǎng)。騰訊的成功與其對(duì)QQ的不斷創(chuàng)新和完善是分不開的。從某種程度上說,騰訊QQ代表了國內(nèi)即時(shí)通信最高的水平。由于我國有著網(wǎng)絡(luò)應(yīng)用最大的市場(chǎng),現(xiàn)在國內(nèi)網(wǎng)絡(luò)的基礎(chǔ)性建設(shè)發(fā)展迅速,應(yīng)用軟件也層出不窮,其中在游戲的領(lǐng)域中,網(wǎng)絡(luò)通信服務(wù)就做得不錯(cuò)。隨著即時(shí)通信應(yīng)用的不斷完善,其功能早已不僅僅是早期的即時(shí)文字聊天。圖像表情已成為各種即時(shí)通信軟件的標(biāo)準(zhǔn)功能,文件傳輸、網(wǎng)上交友、語音/視頻聊天、游戲等高級(jí)功能也逐漸地被集成到即時(shí)通信的應(yīng)用中。從中可以看出,眼下的即時(shí)通信已不再是一個(gè)簡(jiǎn)單的溝通工具,而是一個(gè)信息資訊、交流互動(dòng)、休閑娛樂中心,它一直在努力地推出各種新應(yīng)用。目前即時(shí)通信軟件已越來越成熟,已成為現(xiàn)代人工作和生活中不可或缺的一部份,相信今后即時(shí)通信軟件會(huì)越來越完善。1.3 研究目的目前各種即時(shí)通信軟件基本隨處可見,功能也日趨完善。但是很大一部分即時(shí)通信軟件缺乏數(shù)據(jù)加密功能,這給即時(shí)通信帶來了不可忽視的網(wǎng)絡(luò)安全問題,保密的通信內(nèi)容隨時(shí)可能被他人竊取,引發(fā)不必要的麻煩。因此本課題研究的目的是設(shè)計(jì)實(shí)現(xiàn)一個(gè)界面美觀的仿QQ的聊天工具,采用winsock實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)文字通信,并采用可靠的加密算法對(duì)通信內(nèi)容進(jìn)行加密。該即時(shí)通信軟件應(yīng)具有以下功能: 用戶注冊(cè)登錄功能,個(gè)性化的界面給人以舒適的感覺,必要的操作提示方便用戶使用; 添加好友功能,以消息窗口傳達(dá)添加好友的請(qǐng)求以及回饋消息;加密通信功能,和好友進(jìn)行文字聊天、文件傳輸?shù)?。由于DES加密算法處理速度比較快,且適合對(duì)大量數(shù)據(jù)進(jìn)行加密處理,因此選用DES加密算法對(duì)通信內(nèi)容進(jìn)行加密和解密,以確保即時(shí)通信的安全性。2 系統(tǒng)需求分析需求分析是安全網(wǎng)絡(luò)即時(shí)通信軟件開發(fā)的第一步也是至關(guān)重要的一步,它描述了系統(tǒng)的需求,通過定義系統(tǒng)中的關(guān)鍵域類來建立模型。它的根本目的是在開發(fā)者和提出問題的人之間建立一種便于理解和溝通的機(jī)制。需求分析可以采用面向?qū)ο蟮姆椒▉硗瓿桑疵鞔_系統(tǒng)要服務(wù)于哪些用戶,對(duì)這些用戶提供哪些服務(wù)等,特別是數(shù)據(jù)流圖是需求分析的出發(fā)點(diǎn),數(shù)據(jù)流圖可以劃分出系統(tǒng)必須完成的基本功能。2.1 需求分析如今即時(shí)通信軟件深受人們的喜愛,是人們生活中不可缺少的一部分。本課題設(shè)計(jì)的即時(shí)通信軟件將模仿眼下國內(nèi)最流行的聊天工具QQ,需要實(shí)現(xiàn)用戶注冊(cè)、用戶登錄、添加好友、文字聊天、文件傳輸?shù)裙δ堋T摷磿r(shí)通信軟件采用C/S結(jié)構(gòu),即客戶端與服務(wù)器端的結(jié)構(gòu)體系,分別對(duì)客戶端與服務(wù)器端進(jìn)行相應(yīng)的設(shè)計(jì)。用戶通過該即時(shí)通信軟件的客戶端來實(shí)現(xiàn)以下一些功能:注冊(cè)功能用來提交用戶的相關(guān)資料從而獲得一個(gè)自己特有的用于登錄系統(tǒng)的用戶帳號(hào);登錄功能用來建立與服務(wù)器的連接,驗(yàn)證用戶信息并登錄,能顯示登錄出錯(cuò)信息;界面顯示功能用來顯示所有好友的在線狀態(tài)和個(gè)人信息;添加好友功能用來處理用戶之間的好友添加請(qǐng)求,并對(duì)添加好友請(qǐng)求做出相應(yīng)的響應(yīng);加密通信功能用來實(shí)現(xiàn)在添加好友成功后,好友之間進(jìn)行文字聊天、文件傳輸?shù)燃用芡ㄐ?。該即時(shí)通信軟件的服務(wù)器端用來接收來自客戶端的各種信息并分別對(duì)之做出相應(yīng)處理。服務(wù)器通過信息接收功能來接收客戶端發(fā)送的信息;注冊(cè)處理功能是服務(wù)器接收到用戶的注冊(cè)請(qǐng)求信息后,自動(dòng)為用戶分配帳號(hào),將用戶信息寫入數(shù)據(jù)庫,同時(shí)將信息返回給客戶端;登錄處理功能是服務(wù)器通過驗(yàn)證登錄信息是否正確來實(shí)現(xiàn)相關(guān)的處理;刷新功能是服務(wù)器每過一段時(shí)間刷新一次,來顯示用戶當(dāng)前在服務(wù)器的相關(guān)信息,如在線狀態(tài)等;好友添加處理功能實(shí)現(xiàn)服務(wù)器將用戶的好友信息寫入數(shù)據(jù)庫中用戶好友表的操作;用戶退出處理功能是服務(wù)器在用戶退出即時(shí)通信軟件后,將此用戶下線消息發(fā)給各客戶端,并改寫用戶在服務(wù)器端的狀態(tài)。該軟件需要一個(gè)個(gè)性化的界面,方便用戶使用。第一次使用該軟件的用戶通過填寫個(gè)人資料來注冊(cè),服務(wù)器返回一個(gè)注冊(cè)帳號(hào)給注冊(cè)用戶,用于以后登錄。已經(jīng)注冊(cè)的用戶輸入帳號(hào)和密碼后,驗(yàn)證登錄信息是否正確,若正確則登錄主界面。在線用戶通過查看所要添加好友的個(gè)人信息,并且向好友發(fā)送添加好友請(qǐng)求信息,好友通過驗(yàn)證后,向請(qǐng)求方發(fā)送響應(yīng)消息,請(qǐng)求方添加完成后,并把相關(guān)信息存入到數(shù)據(jù)庫的好友表中。如果好友雙方同時(shí)在線,就可以隨時(shí)進(jìn)行通信了。2.2 數(shù)據(jù)流圖數(shù)據(jù)流圖簡(jiǎn)稱DFD圖,它描繪信息流和數(shù)據(jù)從輸入移動(dòng)到輸出的過程中所經(jīng)受的變換,它有源點(diǎn)或終點(diǎn)、處理、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)流四種成分。數(shù)據(jù)流圖只是描繪數(shù)據(jù)在系統(tǒng)中流動(dòng)和被處理的邏輯過程,在數(shù)據(jù)流圖中沒有任何具體的物理部件,它直觀地顯示了系統(tǒng)中數(shù)據(jù)的使用情況,是極好的理解工具。它精確地描述系統(tǒng)的邏輯模型,描述數(shù)據(jù)在MIS中由輸入經(jīng)過存儲(chǔ)、加工處理最后輸出的全過程,是設(shè)計(jì)者和用戶之間進(jìn)行交流的很好的工具。表2-1數(shù)據(jù)流圖的符號(hào)說明圖 形 符 號(hào)名 稱符 號(hào) 說 明實(shí)體描述系統(tǒng)之外的數(shù)據(jù)提供或數(shù)據(jù)獲得組織機(jī)構(gòu)或個(gè)人,框內(nèi)為實(shí)體名稱PMC 處理描述某種業(yè)務(wù)的手工或計(jì)算機(jī)處理,其中PM表示處理標(biāo)號(hào),C表示處理名稱DN S數(shù)據(jù)存儲(chǔ)描述與處理有關(guān)的數(shù)據(jù)存儲(chǔ),其中DN表示存儲(chǔ)的標(biāo)號(hào),S表示存儲(chǔ)數(shù)據(jù)的名稱FM數(shù)據(jù)流描述數(shù)據(jù)流流動(dòng)方向,其中FM表示數(shù)據(jù)流的名稱本系統(tǒng)采用自頂向下,逐層細(xì)化的方法,繪制的數(shù)據(jù)流圖如下:用戶根據(jù)需要使用即時(shí)通信系統(tǒng),即時(shí)通信系統(tǒng)根據(jù)用戶的請(qǐng)求,給出相應(yīng)的反饋信息。圖2-1 頂層數(shù)據(jù)流圖用戶操作客戶端,客戶端把用戶的請(qǐng)求提交給服務(wù)器,服務(wù)器對(duì)客戶端的請(qǐng)求信息做出相應(yīng)處理并對(duì)數(shù)據(jù)庫進(jìn)行相應(yīng)操作,然后向客戶端反饋信息,客戶端再向用戶反饋操作結(jié)果。圖2-2 第一層數(shù)據(jù)流圖用戶申請(qǐng)帳號(hào)時(shí),用戶注冊(cè)系統(tǒng)向服務(wù)器提交用戶的個(gè)人信息,服務(wù)器接收到用戶注冊(cè)系統(tǒng)提交的信息后,在用戶表中記錄新用戶的基本信息,與此同時(shí),用戶注冊(cè)系統(tǒng)向用戶返回一個(gè)帳號(hào)。用戶登錄時(shí),用戶登錄系統(tǒng)把用戶的登錄信息提交給服務(wù)器,服務(wù)器在用戶表中查找是否存在與用戶輸入的帳號(hào)和密碼都一致的用戶信息,并給用戶登錄系統(tǒng)反饋信息,若一致則登錄成功進(jìn)入客戶端主窗體,向用戶呈現(xiàn)他們想要了解的信息。用戶添加好友時(shí),添加好友系統(tǒng)向服務(wù)器提交好友的ID,服務(wù)器在用戶表中查找是否存在與該ID對(duì)應(yīng)的用戶,若存在則向添加好友系統(tǒng)反饋好友的信息。用戶操作加密通信系統(tǒng),可以和好友進(jìn)行文字聊天和文件傳輸。圖2-3 第二層數(shù)據(jù)流圖3 系統(tǒng)總體設(shè)計(jì)總體設(shè)計(jì)首先要尋找并設(shè)計(jì)實(shí)現(xiàn)目標(biāo)系統(tǒng)的各種不同的方案,而設(shè)想各種可能方案的基礎(chǔ)則是需求分析階段得到的數(shù)據(jù)流圖。從這些供選擇的方案中選取若干個(gè)相對(duì)合理的方案,并為每個(gè)合理的方案準(zhǔn)備一份系統(tǒng)流程圖,列出組成系統(tǒng)的所有物理元素。軟件結(jié)構(gòu)設(shè)計(jì)應(yīng)該遵循的主要原理是模塊獨(dú)立性原理,即軟件應(yīng)該由一組完全相對(duì)獨(dú)立的子功能的模塊組成。總體設(shè)計(jì)中模塊的劃分應(yīng)該符合高內(nèi)聚、低耦合的原則。3.1 系統(tǒng)整體架構(gòu)該即時(shí)通信系統(tǒng)采用C/S模式設(shè)計(jì),主要包括客戶端、服務(wù)器和數(shù)據(jù)庫服務(wù)器三層,客戶端提供用戶注冊(cè)賬號(hào)、用戶登錄、用戶添加好友及對(duì)方響應(yīng)、好友之間通信等服務(wù),服務(wù)器用來對(duì)注冊(cè)登錄的用戶進(jìn)行管理以及對(duì)客戶端發(fā)送的請(qǐng)求信息做出相應(yīng)處理,數(shù)據(jù)庫服務(wù)器存放用戶相關(guān)的用戶表和好友表。它們之間的關(guān)系如圖3-1所示:客戶端服務(wù)器數(shù)據(jù)庫服務(wù)器圖3-1 三層模型服務(wù)器與客戶端之間采用TCP協(xié)議進(jìn)行可靠通信,使服務(wù)器可以隨時(shí)掌控客戶端的在線狀態(tài)和運(yùn)行情況。兩個(gè)要求通信的客戶端之間采用UDP協(xié)議直接進(jìn)行通信。其總體結(jié)構(gòu)如圖3-2所示:服務(wù)器客戶端用戶用戶客戶端TCP連接TCP連接UDP通信圖3-2 系統(tǒng)總體結(jié)構(gòu)該即時(shí)通信系統(tǒng)包含了用戶注冊(cè)模塊、用戶登錄模塊、添加好友模塊、加密通信模塊、服務(wù)器模塊、數(shù)據(jù)庫模塊等,其系統(tǒng)流程圖如圖3-3所示:圖3-3 系統(tǒng)流程圖該系統(tǒng)有一個(gè)簡(jiǎn)單美觀的界面,使用戶很明了該如何使用它。使用該即時(shí)通信軟件的用戶首先得進(jìn)行帳號(hào)申請(qǐng),在登錄窗體上用戶單擊注冊(cè)按鈕,激活注冊(cè)窗體,然后填寫用戶個(gè)人相關(guān)的注冊(cè)信息,提交給服務(wù)器。服務(wù)器將注冊(cè)信息提交給數(shù)據(jù)庫,并由服務(wù)器按注冊(cè)順序生成一個(gè)用戶ID號(hào)并告知注冊(cè)用戶,這樣就完成了帳號(hào)申請(qǐng)。以后用戶就可以用注冊(cè)成功的帳號(hào)進(jìn)行登錄。用戶在登錄窗口輸入用戶帳號(hào)和用戶密碼,由客戶端將登錄信息提交給服務(wù)器,服務(wù)器根據(jù)數(shù)據(jù)庫中存儲(chǔ)的用戶信息與客戶端提交的登錄信息進(jìn)行比較,比較一致后,則返回一個(gè)登錄成功的確認(rèn)信息給客戶端,當(dāng)客戶端收到這個(gè)確認(rèn)信息時(shí),則激活該聊天軟件的客戶端主窗體。倘若你想與好友進(jìn)行聊天,則必須先添加好友,假如用戶1想添加用戶2為好友,那么用戶1首先得向用戶2發(fā)送添加好友請(qǐng)求,用戶2在接收到用戶1的請(qǐng)求信息后,通過驗(yàn)證發(fā)送確認(rèn)反饋信息給用戶1,與此同時(shí)向服務(wù)器提交好友添加確認(rèn)信息,服務(wù)器接收消息后就會(huì)更新相應(yīng)用戶的好友列表中的相關(guān)信息。在好友添加完成后,用戶之間就可以進(jìn)行加密通信,如文字聊天、文件傳輸?shù)取?.2 服務(wù)器概要設(shè)計(jì)服務(wù)器需要完成建立連接、監(jiān)聽客戶和操作數(shù)據(jù)庫這3個(gè)功能。服務(wù)器首先得建立一個(gè)Socket連接,通過TcpListener不斷偵聽是否有客戶端連接或者斷開連接。服務(wù)器是一個(gè)信息發(fā)送中心,所有客戶端的請(qǐng)求信息都發(fā)送到服務(wù)器,再由服務(wù)器根據(jù)要求做出相應(yīng)處理并發(fā)送反饋信息。后臺(tái)采用SQL Server 2000數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存取,數(shù)據(jù)庫的數(shù)據(jù)操作包括錄入用戶信息、查找好友資料以及添加好友數(shù)據(jù)到數(shù)據(jù)庫等。3.3 客戶端概要設(shè)計(jì)客戶端需要完成帳號(hào)申請(qǐng)、用戶登陸、添加好友以及加密通信這4個(gè)功能。當(dāng)用戶申請(qǐng)帳號(hào)時(shí),客戶端與服務(wù)器建立連接,并向服務(wù)器發(fā)送新用戶的申請(qǐng)信息,接收來自服務(wù)器的反饋信息進(jìn)行注冊(cè)。用戶登錄時(shí)先輸入帳號(hào)和密碼,客戶端與服務(wù)器建立連接,向服務(wù)器發(fā)送用戶的登錄信息,服務(wù)器在數(shù)據(jù)庫中查找是否有該用戶信息,若信息一致,則登陸成功。添加好友是客戶端必須實(shí)現(xiàn)的功能,這是用戶之間進(jìn)行聊天的基礎(chǔ)。用戶通過客戶端可以查看好友的信息,添加好友后會(huì)給對(duì)方發(fā)送消息窗口,等待對(duì)方驗(yàn)證。兩個(gè)客戶端之間通過UDP協(xié)議進(jìn)行直接通信,因而好友之間可以進(jìn)行文字聊天和文件傳輸?shù)取?.4 開發(fā)環(huán)境及開發(fā)工具3.4.1 開發(fā)環(huán)境概述微軟發(fā)布了.NET開發(fā)平臺(tái),這是自1993年7月隨著Windows NT3.0出現(xiàn)的Win32 API后微軟軟件開發(fā)平臺(tái)的第一次大升級(jí)。比起Win16來,Win32提供了更多功能強(qiáng)大的API,但沒有對(duì)工具和技術(shù)進(jìn)行引人注目的改變。與之不同的是,.NET開發(fā)平臺(tái)在開發(fā)者用以創(chuàng)造應(yīng)用程序的工具和技術(shù)上做了根本的改變。.NET開發(fā)平臺(tái)使得開發(fā)者創(chuàng)建運(yùn)行在Internet Information Server (IIS)(互聯(lián)網(wǎng)信息服務(wù)器)Web服務(wù)器上的Web應(yīng)用程序更為容易,它也使創(chuàng)建穩(wěn)定、可靠而又安全的Windows桌面應(yīng)用程序更為容易。.NET開發(fā)平臺(tái)包括以下內(nèi)容:(1) .NET Framework(架構(gòu)),包括:Common Language Runtime(CLR)(通用語言運(yùn)行環(huán)境),這是用于運(yùn)行和加載應(yīng)用程序的軟件組件;新的類庫,分級(jí)組織了開發(fā)者可以在他們的應(yīng)用程序中用來顯示圖形用戶界面、訪問數(shù)據(jù)庫和文件以及在Web上通信的代碼集。(2) .NET開發(fā)者工具,包括:Visual Studio .NET Integrated Development Environment (IDE)(Visual Studio .NET集成開發(fā)環(huán)境),用來開發(fā)和測(cè)試應(yīng)用程序。(3) .NET編程語言(例如Visual Basic .NET和新的Visual C#),用來創(chuàng)建運(yùn)行在CLR下并且使用類庫的應(yīng)用程序。(4) ASP .NET,一個(gè)取代以前的Active Server Pages (ASP)的特殊類庫,用來創(chuàng)建動(dòng)態(tài)的Web內(nèi)容和Web服務(wù)器應(yīng)用程序,這些都將采用諸如HTML、XML和Simple Object Access Protocol(SOAP)(簡(jiǎn)單對(duì)象訪問協(xié)議)等Internet協(xié)議和數(shù)據(jù)格式。.NET開發(fā)平臺(tái)是一組用于建立Web服務(wù)器應(yīng)用程序和Windows桌面應(yīng)用程序的軟件組件,用該平臺(tái)創(chuàng)建的應(yīng)用程序在Common Language Runtime(CLR)(通用語言運(yùn)行環(huán)境)(底層)的控制下運(yùn)行。CLR是一個(gè)軟件引擎,用來加載應(yīng)用程序,確認(rèn)它們可以沒有錯(cuò)誤地執(zhí)行,進(jìn)行相應(yīng)的安全許可驗(yàn)證,執(zhí)行應(yīng)用程序,然后在運(yùn)行完成后將它們清除。類庫集提供了使應(yīng)用程序可以讀寫XML數(shù)據(jù)、在Internet上通信、訪問數(shù)據(jù)庫等的代碼。所有的類庫都建立在一個(gè)基礎(chǔ)的類庫之上,它提供管理使用最為頻繁的數(shù)據(jù)類型(例如數(shù)值或文本字符串)的功能,以及諸如文件輸入/輸出等底層功能。Web服務(wù)器應(yīng)用程序通常依賴于ASP.NET,一個(gè)處理Web請(qǐng)求的服務(wù)器端的庫。ASP.NET又依賴一個(gè)用于發(fā)送和接收SOAP信息的Web Services庫,以及一個(gè)用于以瀏覽器接收用戶輸入并動(dòng)態(tài)地生成Web頁面以示響應(yīng)的Web用戶接口(UI)(有時(shí)稱作Web 表單)。Windows桌面應(yīng)用程序通過使用Win表單庫(也稱作Windows 表單)可以顯示一個(gè)圖形UI。最后,Visual Studio .NET提供了一個(gè)用于在該平臺(tái)上創(chuàng)建應(yīng)用程序的圖形Integrated Development Environment(IDE)(集成開發(fā)環(huán)境)。程序員可以使用一種或多種.NET編程語言,來編寫他們的代碼,例如微軟的Visual Basic .NET(VB.NET),Visual C+,Visual C#和JScrjpt .NET等。大量其它的.NET編程語言可以從第三方廠商獲得。3.4.2 C#語言簡(jiǎn)介C#是一種面向?qū)ο蟮恼Z言,它功能強(qiáng),易于表現(xiàn),使用靈活。通過C#可以讓開發(fā)人員快速地建立大范圍的基于微軟新的.NET的平臺(tái)的應(yīng)用,并且提供大量的開發(fā)工具和服務(wù)幫助開發(fā)人員開發(fā)基于計(jì)算和通信的各種應(yīng)用。由于其優(yōu)良的面向?qū)ο笤O(shè)計(jì),在構(gòu)建從高級(jí)業(yè)務(wù)對(duì)象到系統(tǒng)應(yīng)用的各種不同組件時(shí),C#是一個(gè)首要的選擇。使用簡(jiǎn)易的C#語言構(gòu)造,組件可以被轉(zhuǎn)換為WEB服務(wù),從而允許從運(yùn)行在任何操作系統(tǒng)上的任何語言中跨越Internet調(diào)用它們。不僅僅如此,C#的設(shè)計(jì)為C+程序員帶來了快速的開發(fā)能力,而不用犧牲C+已有的功能和控制能力。C#高度保持了與C和C+的一致性。從繼承角度來看,C#在更高層次上重新實(shí)現(xiàn)了C/C+,熟悉C/C+的開發(fā)的人員可以很快的轉(zhuǎn)變?yōu)镃#開發(fā)人員。C#具有以下一些重要特性:(1) 開發(fā)效率與安全性;(2) 與Web開發(fā)相結(jié)合;(3) 減少了開發(fā)中的錯(cuò)誤;(4) 提供內(nèi)置的版本支持來減少開發(fā)費(fèi)用;(5) 更好的結(jié)合商業(yè)應(yīng)用中的流程與軟件實(shí)現(xiàn);(6) 可擴(kuò)展的協(xié)作能力。3.4.3 SQL Server 2000簡(jiǎn)介SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫,是用戶操作關(guān)系數(shù)據(jù)庫的通用語言。SQL雖然叫結(jié)構(gòu)化查詢語言,其查詢操作確實(shí)是數(shù)據(jù)庫中的主要操作,但并不是說SQL語言只支持查詢操作,它實(shí)際上包含數(shù)據(jù)定義、數(shù)據(jù)操縱和數(shù)據(jù)控制等與數(shù)據(jù)庫有關(guān)的全部功能。Microsoft SQL Server 2000是一個(gè)分布式的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),具有客戶機(jī)/服務(wù)器體系結(jié)構(gòu),采用了Transact-sql的sql語言在客戶機(jī)與服務(wù)器間傳遞客戶機(jī)的請(qǐng)求與服務(wù)器的處理結(jié)果。眾所周知,SQL Server 2000能夠滿足今天的商業(yè)環(huán)境要求不同類型的數(shù)據(jù)庫解決方案。它是一種應(yīng)用廣泛的數(shù)據(jù)庫管理系統(tǒng),具有許多顯著的優(yōu)點(diǎn):易用性、適合分布式組織的可伸縮性、用于決策支持的數(shù)據(jù)倉庫功能、與許多其他服務(wù)器軟件緊密關(guān)聯(lián)的集成性、良好的性價(jià)比等。性能、可伸縮性及可靠性是基本要求,而進(jìn)入市場(chǎng)時(shí)間也非常關(guān)鍵。除這些核心企業(yè)品質(zhì)外,SQL Server 2000還為您的數(shù)據(jù)管理與分析帶來了靈活性,允許單位在快速變化的環(huán)境中從容響應(yīng),從而獲得競(jìng)爭(zhēng)優(yōu)勢(shì)。從數(shù)據(jù)管理和分析角度看,將原始數(shù)據(jù)轉(zhuǎn)化為商業(yè)智能和充分利用Web帶來的機(jī)會(huì)非常重要。作為一個(gè)完備的數(shù)據(jù)庫和數(shù)據(jù)分析包,SQL Server 2000為快速開發(fā)新一代企業(yè)級(jí)商業(yè)應(yīng)用程序、為企業(yè)贏得核心競(jìng)爭(zhēng)優(yōu)勢(shì)打開了勝利之門。作為重要的基準(zhǔn)測(cè)試可伸縮性和速度獎(jiǎng)的記錄保持者,SQL Server 2000是一個(gè)具備完全Web支持的數(shù)據(jù)庫產(chǎn)品,提供了對(duì)可擴(kuò)展標(biāo)記語言(XML)的核心支持以及在Internet上和防火墻外進(jìn)行查詢的能力。4 系統(tǒng)詳細(xì)設(shè)計(jì)4.1 數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫是安全網(wǎng)絡(luò)即時(shí)通信系統(tǒng)的后臺(tái),存放著所有用戶的信息,在安全網(wǎng)絡(luò)即時(shí)通信系統(tǒng)中有著極其重要的作用。數(shù)據(jù)庫設(shè)計(jì)的好壞直接影響到整個(gè)系統(tǒng)的運(yùn)行效率。一個(gè)良好的數(shù)據(jù)庫設(shè)計(jì),可以提高數(shù)據(jù)信息的存儲(chǔ)效率,保證數(shù)據(jù)信息的一致性和完整性。而且一個(gè)設(shè)計(jì)合理的數(shù)據(jù)庫結(jié)構(gòu)有助于程序的實(shí)現(xiàn)。本系統(tǒng)選用SQL Server 2000作為后臺(tái)數(shù)據(jù)庫。本系統(tǒng)需要兩張數(shù)據(jù)庫表分別用來存放用戶的注冊(cè)信息以及用戶的好友資料。在SQL Server 2000上新建一個(gè)名為test的數(shù)據(jù)庫,并在test中建立兩張數(shù)據(jù)庫表:用戶的基本信息表(表名userio)和用戶的好友表(表名u_id)。表4.1用戶基本信息表字段名稱數(shù)據(jù)類型長(zhǎng)度主鍵說明允許空UserIDint4yes用戶帳號(hào)否UserNamevarchar50用戶昵稱否Pwdvarchar50密碼是UserImagevarchar50用戶頭像編號(hào)否OnlineStatint4在線狀態(tài)是IPAdressvarchar50IP地址是Portint4端口號(hào)是表4.2 用戶好友表字段名稱數(shù)據(jù)類型長(zhǎng)度主鍵說明允許空FriendIndexint4yes好友帳號(hào)是OnlineStatint4在線狀態(tài)是采用數(shù)據(jù)庫的目的是保存用戶的基本信息及好友信息,為用戶之間的通信提供相關(guān)的數(shù)據(jù)服務(wù),例如用戶登錄時(shí),在登錄窗口中輸入用戶帳號(hào)和密碼后,就需要和數(shù)據(jù)庫中已有的用戶信息進(jìn)行比較,如果一致則登錄成功,如果不一致則需要重新登錄。基本的設(shè)計(jì)思路為首先建立一個(gè)用戶基本信息表,這張表包括所有用戶的詳細(xì)信息,包括用戶帳號(hào)、用戶昵稱、密碼、用戶頭像編號(hào)、在線狀態(tài)等,當(dāng)新用戶注冊(cè)時(shí),將用戶的基本信息記錄該表內(nèi);在用戶注冊(cè)成功后,服務(wù)器就會(huì)自動(dòng)生成一個(gè)該用戶的好友表,該表中存放著該用戶添加的好友信息,在用戶登錄成功后,客戶端主界面上的好友信息就來自用戶的好友表,從而兩個(gè)在線的好友之間就可以進(jìn)行通信了。數(shù)據(jù)庫表的關(guān)系實(shí)際上體現(xiàn)為用戶表與用戶表之間的關(guān)系。圖4-1為該即時(shí)通信系統(tǒng)的數(shù)據(jù)庫的E-R圖,它體現(xiàn)了用戶1表(用戶1帳號(hào),用戶1昵稱,用戶1在線狀態(tài),用戶1頭像編號(hào)等),其中用戶1帳號(hào)為主鍵;用戶2表(用戶2帳號(hào),用戶2昵稱,用戶2在線狀態(tài),用戶2頭像編號(hào)等),其中用戶2帳號(hào)為主鍵。這兩個(gè)用戶表之間的關(guān)系是1:1關(guān)系,即用戶1的好友表只能添加一個(gè)用戶2為好友,用戶2的好友表中只存在一個(gè)用戶1的帳號(hào)。用戶1可以添加N個(gè)用戶為好友,但這些好友的帳號(hào)在用戶1的好友表中是唯一的。用戶1用戶2添加好友用戶1頭像編號(hào)11用戶2在線狀態(tài)用戶1帳號(hào)用戶1昵稱用戶1在線狀態(tài)用戶2帳號(hào)用戶2昵稱用戶2頭像編號(hào)圖4-1 實(shí)體關(guān)系E-R圖4.2 通信消息加密處理原理數(shù)據(jù)加密技術(shù)是指對(duì)在網(wǎng)絡(luò)中所發(fā)送的明文消息用加密密鑰加密成密文進(jìn)行傳送,接收方用解密密鑰進(jìn)行解密再現(xiàn)明文消息,從而保證傳輸過程中密文信息即使被泄漏,在無密鑰的情況下仍是安全保密的。數(shù)據(jù)加密模型如圖4-2所示,它由明文M、密文C、密鑰K、加密算法E和解密算法D五個(gè)部分組成。加密過程為在發(fā)送端利用加密算法E和加密密鑰Ke對(duì)明文M進(jìn)行加密,得到密文C = Ek(M)。密文C被傳送到接受端后進(jìn)行解密。解密過程為接受端利用解密算法D和解密密鑰Kd對(duì)密文進(jìn)行解密。將密文恢復(fù)為明文M = Dk(C)。發(fā)送方加密算法E解密算法D接收方C=Ek(m)公共通道秘密通道M=Dk(c)MKeKd圖4-2 數(shù)據(jù)加密模型DES算法是一種采用傳統(tǒng)加密方法的區(qū)組密碼。DES算法的入口參數(shù)有三個(gè):Key、Data、Mode。其中Key 為8個(gè)字節(jié)共64位,是DES算法的工作密鑰;Data為8個(gè)字節(jié)共64位,是要被加密或被解密的數(shù)據(jù);Mode為DES的工作方式,有兩種:加密或解密。DES的加密過程可分為加密處理、加密變換及子密鑰的生成三個(gè)部分。l 加密處理初始換位:加密處理首先要對(duì)64比特明文按初始換位表IP進(jìn)行換位。表中的數(shù)字表示輸人的比特被置換后的新比特位置。加密處理:上述換位處理的輸出中, 中間要經(jīng)過16層復(fù)雜的加密變換。經(jīng)過初始換位的64比特的輸出變?yōu)橄乱徊降妮斎? 此64比特分成左、右兩個(gè)32比特, 左為L(zhǎng)0,右為R0。若經(jīng)過第n層處理后的左、右32比特分別為L(zhǎng)n和Rn,則:Ln=Rn-1,Rn=Lnf(Rn-1,Kn),Kn是向第n層輸入的48比特的密鑰;f是以Rn-1和Kn為變量的輸出32比特的函數(shù)。最后換位:進(jìn)行完16次的加密變換之后,將L16和R16合成64位數(shù)據(jù),再按最后換位表IP-1進(jìn)行換位,得到64比特的密文。l 加密變換在DES算法中,其他部分是線性的,而這個(gè)f(Rn-1,Kn)變換是非線性的,因此可以產(chǎn)生強(qiáng)度很高的密碼。32比特的R首先按擴(kuò)展型換位表進(jìn)行換位,同時(shí)把一部分比特重復(fù)使用, 便可以擴(kuò)大成48比特。這樣得到的48比特的R,按照從頭算起,每4比特再加上后面的2比特,便形成每6比特一組的8個(gè)分組。這48比特的R和48比特的密鑰K進(jìn)行異或運(yùn)算,并分成每組6比特的8個(gè)分組, 輸人到S1S8的8個(gè)S盒中去, S1S8稱為選擇函數(shù)。這些S盒輸人是6比特, 輸出是4比特。究竟采取哪一個(gè)代替表,要通過輸人的6比特的開頭和末尾的兩個(gè)比特選定, 然后按選定的代替表將輸人的6比特的中間4比特進(jìn)行代替。這樣從8個(gè)S盒輸出的32比特, 根據(jù)單純換位表進(jìn)行換位, 這樣便實(shí)現(xiàn)了f(Rn-1,Kn)的變換。l 子密鑰的生成 在64比特的密鑰里包含了8位的奇偶校驗(yàn)位,所以實(shí)際密鑰長(zhǎng)度是56比特,而每層要生成48比特的子密鑰。輸人的64比特的密鑰,首先通過壓縮型換位PC1去掉奇偶校驗(yàn)位, 再將不含奇偶校驗(yàn)位的56比特進(jìn)行輸出,而每層要分成兩部分,上部分的28比特為C0, 下部分的28比特為D0。C0和D0依次進(jìn)行循環(huán)左移位,生成C1和D1,然后將C1和D1合成56位,再通過壓縮型換位PC2,輸出的結(jié)果即為48位子密鑰K1。再將C1和D1進(jìn)行循環(huán)左移位和PC2的轉(zhuǎn)換, 即得到子密鑰K2。以此類推,得到16級(jí)的子密鑰。在產(chǎn)生16級(jí)子密鑰的過程中,L1,L2,L9,L16是循環(huán)左移1位的變換,而其余的Lsi都是循環(huán)左移2位的變換。DES算法具體實(shí)現(xiàn)如下:把基于DES算法的核心加密解密程序封裝成一個(gè)類文件,供外部函數(shù)調(diào)用。1.根據(jù)指定的密鑰生成DES構(gòu)造函數(shù)public Des(string key)mydes = new DESCryptoServiceProvider();Key = key;IV="728#$%TyguyshdsufhsfwofnhKJHJKHIYhfiusf98*(%$&&(*&()$#%$RHGJJHHJ"2.生成用于DES算法的隨機(jī)8位字符串密鑰private byte GetLegalKey() string sTemp = Key;mydes.GenerateKey();byte bytTemp = mydes.Key;int KeyLength = bytTemp.Length;if (sTemp.Length > KeyLength)sTemp = sTemp.Substring(0, KeyLength);else if (sTemp.Length < KeyLength) sTemp = sTemp.PadRight(KeyLength, );return ASCIIEncoding.ASCII.GetBytes(sTemp);3.獲取當(dāng)前密鑰和初始向量,隨后創(chuàng)建DES加密器對(duì)象,將輸入的8位明文加密成8位密文并轉(zhuǎn)換為等效的字符串返回public string Encrypt(string Source) byte bytIn = UTF8Encoding.UTF8.GetBytes(Source); MemoryStream ms = new MemoryStream(); mydes.Key = GetLegalKey();mydes.IV = GetLegalIV();ICryptoTransform encrypto = mydes.CreateEncryptor(); /用當(dāng)前密鑰和初始向量創(chuàng)建DES加密器對(duì)象CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);cs.Write(bytIn, 0, bytIn.Length); /將一個(gè)字節(jié)序列寫入當(dāng)前CryptoStream,并將流中的當(dāng)前位置提升寫入的字節(jié)數(shù)cs.FlushFinalBlock(); /用緩沖區(qū)的當(dāng)前狀態(tài)更新基礎(chǔ)數(shù)據(jù)源或儲(chǔ)存庫,隨后清除緩沖區(qū)ms.Close();byte bytOut = ms.ToArray();return Convert.ToBase64String(bytOut);4.把等效字符串轉(zhuǎn)換為8位密文,獲取當(dāng)前密鑰和初始向量,隨后創(chuàng)建DES解密器對(duì)象,將8位密文解密成8位明文并返回public string Decrypt(string Source)byte bytIn = Convert.FromBase64String(Source);MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);mydes.Key = GetLegalKey();mydes.IV = GetLegalIV();ICryptoTransform encrypto = mydes.CreateDecryptor(); /用當(dāng)前密鑰和初始向量創(chuàng)建DES解密器對(duì)象CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);StreamReader sr = new StreamReader(cs);return sr.ReadToEnd();4.3 通信協(xié)議設(shè)計(jì)4.3.1 傳輸層協(xié)議TCP是面向連接的傳輸層協(xié)議,提供雙向同時(shí)通信和可靠的數(shù)據(jù)傳輸??蛻舳撕头?wù)器之間使用的就是TCP協(xié)議。TCP每一條連接上的通信是一對(duì)一的,它提供錯(cuò)誤控制,對(duì)亂序到達(dá)的報(bào)文進(jìn)行重新排序。TCP報(bào)文段包括協(xié)議首部和數(shù)據(jù)兩部分,協(xié)議首部的固定部分有20個(gè)字節(jié)。TCP首部格式如圖4-3所示。源端口(2字節(jié))目的端口(2字節(jié))序號(hào)(4字節(jié))確認(rèn)號(hào)(4字節(jié))數(shù)據(jù)偏移保留UURGAACKPPSHRRSTSSYNFFIN窗口(2字節(jié))校驗(yàn)和(2字節(jié))緊急指針(2字節(jié))選項(xiàng)(長(zhǎng)度可變)填充圖4-3 TCP首部格式TCP會(huì)話通過“三次握手”完成初始化,它使序號(hào)同步,并提供在兩個(gè)主機(jī)之間建立虛擬連接所需的控制信息。“三次握手”的過程如圖4-4所示??蛻舳薃主動(dòng)打開服務(wù)器B被動(dòng)打開連接請(qǐng)求B發(fā)送確認(rèn)A發(fā)送確認(rèn)SYN=1,SEQ=x,ACK=0SYN=1,ACK=1,SEQ=y,ACK=x+1ACK=1,SEQ=x+1,ACK=y+1圖4-4 TCP的“三次握手”TCP需要先互相確認(rèn)后才可以斷開連接,否則就是非法斷開連接。它通過“四次揮手”斷開連接,過程如圖4-5所示??蛻舳薃服務(wù)器BA應(yīng)用進(jìn)程釋放連接通知主機(jī)進(jìn)程并加以確認(rèn)A發(fā)送確認(rèn)FIN=1,SEQ=xACK=1,SEQ=y,ACK=x+1ACK=1,SEQ=x+1,ACK=y+1B應(yīng)用進(jìn)程釋放連接FIN=1,ACK=1,SEQ=y,ACK=x+1關(guān)閉狀態(tài)圖4-5 TCP的“四次揮手”UDP是無連接的傳輸層協(xié)議,UDP報(bào)文不需要確認(rèn),由于附加的控制信息少,傳輸效率比較高。兩個(gè)用戶之間聊天使用的是UDP協(xié)議,UDP協(xié)議用來在互聯(lián)網(wǎng)中提供包交換,它提供了向另一個(gè)用戶程序發(fā)送信息的最簡(jiǎn)便的協(xié)議機(jī)制。在發(fā)送數(shù)據(jù)報(bào)文段之前不需要建立連接,它不支持擁塞控制,網(wǎng)絡(luò)出現(xiàn)擁塞時(shí)就簡(jiǎn)單地丟掉數(shù)據(jù)單元,支持一對(duì)多、一對(duì)一、多對(duì)多和多對(duì)一的交互通信。UDP的首部很簡(jiǎn)單,只有8個(gè)字節(jié),由源端口號(hào)、目的端口號(hào)、長(zhǎng)度及校驗(yàn)和4個(gè)字段組成,每個(gè)字段都是2個(gè)字節(jié)。4.3.2 應(yīng)用層協(xié)議用戶注冊(cè)時(shí),客戶端向服務(wù)器提交的消息格式為:控制符REG昵稱密碼頭像ID服務(wù)器查看控制符,若為REG則調(diào)用注冊(cè)函數(shù),生成一個(gè)新的用戶ID,隨同昵稱、密碼、頭像ID一起插入用戶信息表中。用戶登錄時(shí),客戶端向服務(wù)器提交的消息格式為:控制符LOG用戶ID密碼服務(wù)器查看控制符,若為L(zhǎng)OG則調(diào)用登錄函數(shù),在用戶信息表中查找是否有與輸入的帳號(hào)和密碼一致的用戶記錄,若有則向客戶端返回判別符ACC,表示登錄成功,若無則向客戶端返回判別符UAC,表示登錄失敗。用戶查看好友資料時(shí),客戶端向服務(wù)器提交的消息格式為:控制符RFI好友ID服務(wù)器查看控制符,若為RFI則調(diào)用請(qǐng)求好友資料函數(shù),在用戶信息表中查找是否存在該用戶ID,若無則向客戶端返回判別符false,表示不存在該用戶,若有則向客戶端返回響應(yīng)消息,格式為:判別符true好友ID好友昵稱好友頭像ID好友IP在線狀態(tài)用戶1向用戶2發(fā)送添加好友請(qǐng)求時(shí),用戶1所在客戶端向用戶2所在客戶端發(fā)送消息的格式為:控制符REQ用戶ID用戶IP用戶2點(diǎn)擊同意按鈕時(shí),用戶2所在客戶端向服務(wù)器提交的消息格式為:控制符ADD用戶ID好友ID服務(wù)器查看控制符,若為ADD則調(diào)用添加好友函數(shù),在用戶1和用戶2的好友表中分別插入用戶2和用戶1 的ID。與此同時(shí)用戶2所在客戶端向用戶1所在客戶端發(fā)送的消息格式為:控制符AFF判別符Finish用戶2點(diǎn)擊拒絕按鈕時(shí),用戶2所在客戶端向用戶1所在客戶端發(fā)送的消息格式為:控制符AFF判別符Refuse用戶1所在客戶端查看控制符,若為AFF則調(diào)用添加好友反饋函數(shù),查看判別符,若為Finish則添加好友成功,若為Refuse則添加好友失敗。用戶1給用戶2發(fā)送文字信息時(shí),用戶1所在客戶端向用戶2所在客戶端發(fā)送的消息格式為:控制符MSG用戶ID文字信息用戶2所在客戶端查看控制符,若為MSG則調(diào)用用戶選擇函數(shù),找到用戶1并把文學(xué)消息顯示在用戶1的聊天窗口中。用戶1給用戶2傳輸文件時(shí),用戶1所在客戶端向用戶2所在客戶端發(fā)送的消息格式為:控制符RFS用戶ID文件大小文件名稱用戶2所在客戶端查看控制符,若為RFS則調(diào)用請(qǐng)求傳輸文件函數(shù),用戶2點(diǎn)擊接收按鈕時(shí),用戶2所在客戶端向用戶1所在客戶端發(fā)送的消息格式為:控制符RSQ判別符ACC用戶2點(diǎn)擊拒絕按鈕時(shí),用戶2所在客戶端向用戶1所在客戶端發(fā)送的消息格式為:控制符RSQ判別符REJ用戶1所在客戶端查看控制符,若為RSQ則調(diào)用文件傳輸反饋函數(shù),查看判別符,若為ACC則開始傳輸文件,若為REJ則表示對(duì)方拒絕接收文件。4.4 系統(tǒng)主要模塊的實(shí)現(xiàn)4.4.1 注冊(cè)登錄模塊的實(shí)現(xiàn)注冊(cè)登錄功能是很多應(yīng)用軟件都應(yīng)具備的基本功能。首先啟動(dòng)客戶端,會(huì)出現(xiàn)一個(gè)登錄對(duì)話框,如果用戶第一次使用該軟件,需要先申請(qǐng)一個(gè)帳號(hào),點(diǎn)擊帳號(hào)申請(qǐng)按鈕,就會(huì)觸發(fā)btnRegister_Click(object sender, EventArgs e) 事件處理函數(shù),顯示用戶注冊(cè)窗體,填寫完用戶的個(gè)人信息后,點(diǎn)擊確定按鈕,就會(huì)觸發(fā)btnOK_Click(object sender, EventArgs e) 事件處理函數(shù),首先判斷兩次輸入的密碼是否一致,若不一致給出錯(cuò)誤提示,填寫信息無誤后向服務(wù)器發(fā)送字符串"REG" + nickname + "" + pwd +""+faceid,提交用戶的個(gè)人信息。服務(wù)器在接收到客戶端的申請(qǐng)帳號(hào)請(qǐng)求信息后,使用語句"INSERT userio(userid,username,pwd,userimage,onlineStat,ipaddress,port)VALUES("+tempid+","+username+","+ pwd+","+userimage+", 0,"+remoteip.ToString()+","+port+ ")"向數(shù)據(jù)庫的用戶信息表中插入一條新的記錄,并使用語句"CREATE TABLE u_" + tempid + " (friendIndex int NULL ,onlineStat int NULL )"給用戶創(chuàng)建一個(gè)好友表,最后向客戶端返回一個(gè)用戶帳號(hào)。其關(guān)鍵代碼如下:private void btnOK_Click(object sender, EventArgs e)if(pwd != repwd) MessageBox.Show("兩次密碼輸入不一致,請(qǐng)重新輸入密碼!"); pass = false; elsetry int id = Convert.ToInt32(faceid); pass = true; catch MessageBox.Show("請(qǐng)確認(rèn)你的頭像ID輸入正確,頭像ID只能為數(shù)字!"); pass = false; if(pass = true) tcpc.Connect(serverip , port); NetworkStream nsc = tcpc.GetStream(); string brestr = "REG" + nickname + "" + pwd +""+faceid; write = Encoding.Unicode.GetBytes(brestr.ToCharArray(); nsc.

注意事項(xiàng)

本文([優(yōu)秀畢業(yè)論文]安全網(wǎng)絡(luò)即時(shí)通信軟件的設(shè)計(jì)與實(shí)現(xiàn))為本站會(huì)員(仙***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!