




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、中原工學院計算機學院網(wǎng)絡安全程序課程設計報告題目:基于 des 加密的聊天程序班級:網(wǎng)絡 124 班1目錄第 1 章 緒論 _31.1 des 加密背景 _31.2 聊天程序設計背景 _ 4第 2 章 加密原理 _52.1 des 簡介 _52.2 des 加密原理 _52.3 des 加密過程 _7第 3 章 聊天程序設計 _83.1 TCP/IP 協(xié)議 _83.2客戶機 / 服務器模式 _ 83.3 Socket _ 9第 4 章 系統(tǒng)設計 _114.1開發(fā)語言及環(huán)境 _ 114.2需求分析 _ 114.2.1功能需求分析114.2.2數(shù)據(jù)需求分析114.2.3性能需求分析124.2.4運
2、行需求分析124.3程序流程圖 _ 134.4模塊設計 _ 144.4.1服務器144.4.2客戶端15第 5 章 程序測試 _175.1 運行結(jié)果17第 6 章 總結(jié) _21參考文獻 _212第1章緒論1.1 des加密背景隨著計算機和網(wǎng)絡在軍事、政治、金融、工業(yè)、商業(yè)等部門的廣泛應用,社會對計算機和網(wǎng)絡的依賴越來越大,科學技術的研究和發(fā)展及其在商業(yè)領域的應用等方面,無一不與信息息息相關。所以信息就是生命,信息就是時間,信息就是財富。由于信息是共享的,信息的擴散會產(chǎn)生社會影響,所以保護信息的安全是信息時代的迫切需要。如果計算機和網(wǎng)絡系統(tǒng)的信息安全受到破壞將導致社會的混亂并造成巨大損失。因此,
3、確保計算機和網(wǎng)絡系統(tǒng)的信息安全已成為世人關注的社會問題和計算機科學與技術領域的研究熱點。當前,以Internet 為代表的計算機網(wǎng)絡的迅速發(fā)展和廣泛應用,正引起社會和經(jīng)濟的深刻變革, 極大地改變著人們的生活和工作方式。Internet 已經(jīng)成為我們生活和工作中一個不可缺少的組成部分。對此,發(fā)展我國的電子政務、電子商務和電子金融已成為建設具有中國特色社會主義強國的不可回避的選擇。然而,目前影響電子政務、電子商務、電子金融應用的主要技術障礙是信息安全問題。由于Internet 原來缺少安全設計,再加上Internet 的開放性和無政府狀態(tài),使Internet 成為一個不安全的網(wǎng)絡。這就使得Inte
4、rnet 不能適應電子政務、電子商務和電子金融等系統(tǒng)對信息安全的要求。確保信息的安全就必須加強加密技術,加密技術是基于密碼學原理來實現(xiàn)計算機、網(wǎng)絡乃至一切信息系統(tǒng)安全的理論與技術基礎。1977 年美國頒布了數(shù)據(jù)加密標準 DES(Data Encryption Stantard),這是密碼史上的一個創(chuàng)舉。 DES 算法最初由美國 IBM 公司設計,經(jīng)美國國家安全局評測后,頒布為標準。 DES 開創(chuàng)了向世人公開加密算法的先例。自從公布以來,它一直超越國界,成為國際上商用保密通信和計算機通信的最常用的加密算法。 DES 也是曾被廣泛使用的分組密碼,遍及世界的政府,銀行和標準化組織把 DES 作為安全
5、和論證通信的基礎。 DES 算法公開是密碼學史上里程碑式的事件31.2聊天程序設計背景隨著互聯(lián)網(wǎng)技術的發(fā)展,互聯(lián)網(wǎng)應用越來越豐富。互聯(lián)網(wǎng)以其獨特的傳播方式吸引了大量用戶,同時也給人們帶來了許多便利,譬如可以借助于網(wǎng)絡進行相互交流、信息傳遞等。聊天工具作為互聯(lián)網(wǎng)中運用最為廣泛的通信工具之一,它可以讓用戶之間進行即時的交流和信息的傳遞。聊天工具的出現(xiàn)可以說是基于互聯(lián)網(wǎng)通信交流方式的歷史性變革,它已經(jīng)漸漸取代了原來效率低、費用高的如信件、電報的通信方式,以其快速、交互、簡便的方式給用戶的交流提供了簡單、易用的信息平臺,成為現(xiàn)今應用最為廣泛的即時通信工具之一。隨著相關技術的日益發(fā)展,用戶對功能的需求不
6、斷提高。為了更好地服務于用戶,聊天工具的功能也在不斷地完善。在未來的網(wǎng)絡時代中,聊天工具將以即時通信為其基本特點,并與各種網(wǎng)絡應用整合,同時隨著無線網(wǎng)絡的廣泛應用,它將成為未來不可缺少的一種通信軟件。本課程設計的目的主要是為了滿足人們通訊交流的便捷,實現(xiàn)靈活、全面的語音、視頻信息的傳遞和服務。模擬騰訊公司的 QQ 聊天軟件,開發(fā)一個多功能的聊天系統(tǒng)軟件,該課程設計主要實現(xiàn)文字聊天功能。4第2章加密原理2.1 des簡介DES 的設計目標是,用于加密保護靜態(tài)存儲和傳輸信道中的數(shù)據(jù),安全使用 1015 年。DES 綜合運用了置換、 代替、代數(shù)等多種密碼技術。 它設計精巧、 安全、方便,是近代密碼的
7、世界標準,為確保數(shù)據(jù)安全作出了重大貢獻。DES 的設計充分體現(xiàn)了Shannon 信息保密理論所闡述的設計密碼的思想,標志著密碼的設計與分析達到了新的水平。DES 是一種分組密碼。明文、密文和密鑰的分組長度都是64 位。DES 是面向二進制的密碼算法, 因而能夠加解密任何形式的計算機數(shù)據(jù)。DES 是對合運算,因而加密和解密共用同一算法,從而使工程實現(xiàn)的工作量減半。2.2 des加密原理DES 全稱為 Data Encryption Standard 即數(shù)據(jù)加密算法,它是 IBM公司研究成功并公開發(fā)表的。DES算法的入口參數(shù)有三個:Key、 Data、 Mode。其中 Key 為 8 個字節(jié)共64
8、 位,是 DES算法的工作密鑰; Data 也為 8 個字節(jié) 64 位,是要被加密或被解密的數(shù)據(jù); Mode為 DES的工作方式,有兩種:加密或解密。數(shù)據(jù)加密標準( DES)的算法是用于計算機數(shù)據(jù)加密保護的分組加密的數(shù)學算法,算法以 64 bit 為一個分組對數(shù)據(jù)進行加密。使用 64 bit的密鑰加密 64 bit 分組的信息。首先將原始數(shù)據(jù) 64 bit 明文進行初始置換IP ,然后與子密鑰 ( 由加密密鑰產(chǎn)生 ) 進行一系列迭代運算,最后再經(jīng)過逆置換IP1 ,即可得到 64 bit 密文 ( 加密后數(shù)據(jù) ) 。在每一輪中,數(shù)列塊的右邊32 bit數(shù)據(jù)和密鑰 (Key) 一起傳送給函數(shù) f
9、,函數(shù) f 運算的結(jié)果再與數(shù)列塊左邊32 bit數(shù)據(jù)進行“異或”操作。其中S 盒(S 選擇函數(shù) ) 是 DES算法的心臟,由它實現(xiàn)非線性變換。解密過程與此類似, 只是在應用子密鑰時,順序顛倒為k16,k15, ,k2,k1 。5DES算法實現(xiàn)時用到許多的數(shù)學知識,子密鑰的產(chǎn)生,初始值換IP ,加密函數(shù)以及逆初始值換IP 1 。DES 的整體結(jié)構(gòu)如圖2-1 所示:LiRi 1RiLi 1f (Ri 1 , K i )i=1,2,3, , 16圖 2-1 DES 的整體結(jié)構(gòu)62.3 des加密過程1)64 位密鑰經(jīng)子密鑰產(chǎn)生算法產(chǎn)生出 16 個子密鑰: K1 , K 2 , ,K 16 ,分別供第
10、一次,第二次, , ,第十六次加密迭代使用。(2)64 位明文首先經(jīng)過初始置換 IP( Initial Permutation),將數(shù)據(jù)打亂重新排列并分成左右兩半。左邊 32 位構(gòu)成 L0 ,右邊 32 位構(gòu)成 R0 。(3)由加密函數(shù) f 實現(xiàn)子密鑰 K 1 對 R0 的加密,結(jié)果為 32 位的數(shù)據(jù)組 f ( R0 , K 1 ) 。 f (R0 , K 1 ) 再 與 L0 模 2 相加 ,又 得到 一個 32 位 的數(shù) 據(jù)組 L0 f ( R0 , K 1 ) 。以 L0 f ( R0 , K1 ) 作為第二次加密迭代的 R1 ,以 R0 作為第二次加密迭代的 L1 。至此,第一次加密迭
11、代結(jié)束。(4)第二次加密迭代至第十六次加密迭代的分別用子密鑰 K 2 , K 3 , ,K 16 進行,其過程與第一次加密迭代相同。(5)第十六次加密迭代結(jié)束后,產(chǎn)生一個 64 位的數(shù)據(jù)組。以其左邊 32 位作為 R16 ,以其右邊 32 位作為 L16 ,兩者合并再經(jīng)過逆初始置換 IP 1 ,將數(shù)據(jù)重新排列,便得到64 位密文。至此加密過程全部結(jié)束。綜上可將 DES 的加密過程用如下的數(shù)學公式描述:LiRi 1RiLi 1f (Ri 1 , K i )i1,2,3,167第 3 章 聊天程序設計3.1 TCP/IP協(xié)議TCP/IP 協(xié)議的核心部分是傳輸層協(xié)議(TCP、UDP),網(wǎng)絡層協(xié)議 (
12、IP) 和物理接口層,這三層通常是在操作系統(tǒng)內(nèi)核中設計。因此用戶一般不涉及。 TCP是面向連接的,通信雙方保持一條通路,好比目前的電話線,使用telnet登陸 BBS,用的就是 TCP協(xié)議;UDP是無連接的, 通信雙方都不保持對方的狀態(tài),瀏覽器訪問 Internet 時使用的 HTTP協(xié)議就是基于 UDP協(xié)議的。編程時,編程界面有兩種形式:一、是由內(nèi)核心直接提供的系統(tǒng)調(diào)用;二、使用以庫函數(shù)方式提供的各種函數(shù)。前者為核內(nèi)設計, 后者為核外設計。用戶服務要通過核外的應用程序才能設計,所以要使用套接字(socket)來設計。3.2客戶機 / 服務器模式C/S 結(jié)構(gòu)(Client/Server結(jié)構(gòu))是
13、大家熟知的客戶機和服務器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務合理分配到 Client端和 Server 端來實現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應用系統(tǒng)正在向分布式的Web應用發(fā)展, Web和 Client/Server應用都可以進行同樣的業(yè)務處理,應用不同的模塊共享邏輯組件;因此,內(nèi)部的和外部的用戶都可以訪問新的和現(xiàn)有的應用系統(tǒng),通過現(xiàn)有應用系統(tǒng)中的邏輯可以擴展出新的應用系統(tǒng)。這也就是目前應用系統(tǒng)的發(fā)展方向。首先服務器方要啟動,并根據(jù)請求提供相應服務:( 1)打開一通信通道并告知本地
14、主機, 它在某一公認地址端口上 ( 如 http為 80) 接受客戶請求。( 2)等待客戶請求到達該端口。( 3)接收到重復服務請求,處理該請求并發(fā)送應答信號。接收并發(fā)服務請求,要激活一新進程來處理這個客戶請求。新進程處理此客戶請求,并不需要對其他請求做出應答。服務完成后,關閉此新進程與客戶的通信鏈路,8并終止。( 4)返回第二步,等待另外的客戶請求( 5)關閉服務器??蛻舴剑海?1)打開一通信通道,并連接到服務器所在主機的特定端口。( 2)向服務器發(fā)出服務請求報文,等待并接收應答;繼續(xù)提出請求。( 3)請求結(jié)束后關閉通信通道并終止。從上面的描述過程可知:( 1)客戶與服務器進程的作用是非對稱
15、的。因此編碼不同。( 2)服務進程一般是先于客戶請求啟動的。只要系統(tǒng)運行,該進程一直存在,直到正常終止或者強迫終止。 在 TCP/IP 網(wǎng)絡中兩個進程間的相互作用的主機模式是客戶機 / 服務器模式 (Client/Server model) 。該模式的建立基于以下兩點: 1、非對等作用; 2、通信完全是異步的。3.3 Socketsocket 之間的連接可以分為三種類型:客戶端連接,監(jiān)聽連接以及服器端連接??蛻舳诉B接是指由客戶端的 socket 提出連接請求,要連接的目標是服務器端的 socket 。為此,客戶端的 socket 必須首先描述它要連接的服務器端 socket( 主要是指服務器
16、端 socket 的地址和端口號 ) ,然后再定位所要連接的服務器端 socket ,找到以后,就向服務器端 socket 請求連接。當然,服務器端的 socket 此時未必正好處于準備好狀態(tài),不過,服務器端的 socket會自動維護客戶請求連接的隊列,然后在它認為合適的時候向客戶端socket發(fā)出 " 允許連接 " (accept) 的信號,這時客戶端 socket 與服務器端 socket 的連接就建立了。監(jiān)聽連接,服務器端 socket 并不定位具體的客戶端 socket ,而是處于等待連接的狀態(tài)。當服務器端 socket 監(jiān)聽到或者說 接收到客戶端 socket 的
17、連接請求,它就響應客戶端 socket 的請求建立一個新的 socket 句柄并與客戶 端連接,而服務器端 socket 繼續(xù)處于監(jiān)聽狀態(tài),還可以接收其它客戶端 socket 的連接請求。9服務器端連接,是指當服務器端socket 接收到客戶端 socket 的連接請求后,就把服務器端socket 的描述發(fā)給客戶端,一旦客戶端確認了此描述,連接就建立了。在本文中的聊天程序用的就是監(jiān)聽連接,即服務器設置連接個數(shù)后進行監(jiān)聽, 客戶端進行對服務器端的連接,這樣就可以進行相互通信了。10第4章系統(tǒng)設計4.1開發(fā)語言及環(huán)境開發(fā)語言: c+開發(fā)環(huán)境: visual studio 20134.2需求分析4.
18、2.1功能需求分析( 1)用戶端之間的信息發(fā)送,本程序需要實現(xiàn)的最基本的功能。用戶在界面上可以將自己需要發(fā)送的信息填入相應的對話框中,點擊發(fā)送按鈕后,可以將信息正常的發(fā)送給相應的其它用戶,這個過程中的客戶端與客戶端之間使用點對點發(fā)送信息,利用TCP/IP 協(xié)議中的 UDP 協(xié)議。( 2)在線用戶主機 IP 列表的維護。在用戶發(fā)送信息之前,需要選擇相應的目的地端 IP,這也就需要客戶端擁有在線用戶主機的 IP 地址,這個在線主機列表的維護是需要客戶端定時自動向服務器端發(fā)送信息,服務器端收集并維護在線用戶列表,再發(fā)送回客戶端。需要在客戶端和服務器端都使用定時器來完成此功能。(3)在 C/S 模式中
19、,服務器與客戶端是相互依賴的。在客戶端啟用以后,需要查看服務器端是否在線,服務器在線才能正常使用客戶端,如果服務器不在線,則在檢測一定次數(shù)以后自動退出客戶端程序。在使用過程中,客戶端在指定時間內(nèi)未向服務器端發(fā)送信息的,服務器認為客戶端下線;客戶端在一定時間內(nèi)未收到服務器端信息的,認為服務器已經(jīng)下線,則提示用戶并建議退出,在用戶一定時間后沒有退出的則自動關閉客戶端程序。4.2.2數(shù)據(jù)需求分析(1)客戶端之間聊天信息。在控件上顯示時格式化,更易于用戶的查看自己發(fā)送或接收到的信息。(2)在線用戶聊天信息。服務器端存放在適當?shù)目臻g中,在發(fā)送給客戶端時,對信息列表進行格式化,便于客戶端提取信息。11(3
20、)客戶端向服務器端發(fā)送的確認在線信息。包括客戶端剛剛啟動時的初始化信息和在使用過程中的確認在線信息。(4)其它程序內(nèi)部可能需要設計的數(shù)據(jù)結(jié)構(gòu)體。4.2.3性能需求分析(1)可靠性高,能在由于系統(tǒng)問題或其它原因產(chǎn)生錯誤后,作出相對應處理,比如網(wǎng)絡初始化失敗、服務器不在線等,可以提示用戶安全退出本程序,在出現(xiàn)不可知的錯誤以后,可以盡量安全的退出程序。在程序的設計過程中,要求能盡可能多的設想到用戶使用過程中可能發(fā)生的事件,并能在判斷事件后做出相應的處理,使程序具有較高的容錯性能。(2)宜操作性,程序簡單易懂,容易上手使用。設計界面是,簡化界面的復雜性,模擬 QQ 等現(xiàn)有即時通訊工具的界面,使用戶能很
21、容易看懂并使用。(3)開發(fā)文檔易理解,保證以后自己二次開發(fā)或他人接手開發(fā)時,能夠清晰的理解整個系統(tǒng)的設計思路和實現(xiàn)細節(jié)。(4)模塊化設計此軟件的功能,不同的模塊實現(xiàn)不同的功能,使得軟件易于以后的維護與擴展,在以后可以更好的完善本軟件的功能,更方便于在工作中的應用。4.2.4運行需求分析(1)用戶界面程序較小,啟動速度快??稍诰W(wǎng)絡中使用。啟動后的應用界面要清爽,設計要簡單明了,要具有較高的易用性。(2)故障處理在遇到可預知的故障與情況時,能提示用戶;在遇到不可預知的故障時能安全退出。124.3程序流程圖首先在服務器方, 利用 socket() 函數(shù)建立流式套接字, 返回套接字號 s, 接著利用
22、bind() 函數(shù)將套接字 s 與本地地址綁定,緊接著利用 listen(0 函數(shù)通知 TCP,監(jiān)聽客戶方,服務器準備接收連接,沒有連接的話,服務器方通過 closesocket() 關閉套接字 s, 服務結(jié)束。有連接的話,在客戶方,通過 socket() 函數(shù)建立流式套接字 s, 此時在服務器方, 建立連接,通過 accept() 返回,得到新的套接字 ns, 客戶方通過 connect() 將套接字 s 與遠程地址連接 , 此時服務器方 / 客戶方在 ns/s 上讀 / 寫數(shù)據(jù),直到交換完成。 交換完成后, 服務器方 / 客戶方關閉套接字ns/s, 最后服務器方通過closesocket(
23、)關閉最初套接字 s, 服務結(jié)束。具體設計過程如圖1-2 所示。服務器方客戶方Socket()建立流式接字, 返回套接字 號 sbind() 套接字 s 與本地地址綁定listen() 通知TCP 服務器準備接收連accept()接收連接,等待客戶端的連接Socket() 建立流式套接字號s建立連接, accept()返回,得到新套接nsconnect() 將套接字s 與遠程地址連接Recv()/send()在 ns 上讀 /寫數(shù)據(jù),直到完成Recv()/send()在 s 上讀 /寫數(shù)據(jù),直到完成交換closesocket(),關閉套接字nsclosesocket()關閉套接字 s,結(jié)束 T
24、CPclosesocket()關閉最初套接字s,服務結(jié)束圖 12134.4模塊設計4.4.1服務器首先運行服務器,服務器偵聽端口消息,等待客戶端向其建立連接的申請,一旦接收到客戶端的連接請求,服務器將返回一個新的套接字描述符,通過該描述符調(diào)用數(shù)據(jù)傳輸函數(shù)即可與客戶端進行數(shù)據(jù)的收發(fā)。服務器若接收的是登陸信息,向該用戶發(fā)送在線用戶列表,并更新服務器的在線用戶列表;若收到的是發(fā)送信息,服務器解析信息,然后通過廣播消息,向其所有線用戶列表發(fā)送消息。具體代碼如下:144.4.2客戶端在運行服務器之后, 運行客戶端??蛻舳耸紫认蚍掌魈岢鼋⑦B接請求,然后建立一個套接字描述符,通過該描述符調(diào)用數(shù)據(jù)傳輸函數(shù)即可與服務端進行數(shù)據(jù)的收發(fā)。用戶登錄成功后,向服務器發(fā)送登陸消息,并更新本地在線用戶列表,然后通過服務器實現(xiàn)與其他客戶聊天;當客戶退出,向服務器發(fā)送下線消息。具體代碼如下:154.4.3加密模塊16第5章程序測試5.1 運行結(jié)果開啟服務器:利用客戶端連接服務器:17輸入昵稱并發(fā)送消息:18加密發(fā)送,接收端收到的是密
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025共同擔保借款合同書模板
- 2025新農(nóng)村建設項目:污水處理設施施工承包合同
- 2025關于出版社與作者版權轉(zhuǎn)讓合同
- 2025勞動合同法辭職規(guī)定
- 《2025年的青島房屋租賃合同》
- 2025供應商與分銷商合作合同模板
- 2025 水產(chǎn)品買賣合同
- 幼兒園中班課程藝術造飛機
- 2025租房合同書格式樣本
- 2025商業(yè)辦公房買賣合同模板
- 七類作業(yè)JSA分析記錄表格模板
- 心理統(tǒng)計學考研歷年真題及答案
- 2022年中國石油大學《化工原理二》完整答案詳解
- 技術經(jīng)紀人練習題集附有答案
- 內(nèi)科學講義(唐子益版)
- GB/T 4357-2022冷拉碳素彈簧鋼絲
- GB/T 19845-2005機械振動船舶設備和機械部件的振動試驗要求
- GB/T 14614-1993小麥粉吸水量和面團揉和性能測定法粉質(zhì)儀法
- 醬酒行業(yè)發(fā)展趨勢分析
- 《紅樓夢》賈府平面圖
- 養(yǎng)老機構(gòu)全套服務管理流程圖()
評論
0/150
提交評論