安全即時(shí)通訊軟件論文_第1頁
安全即時(shí)通訊軟件論文_第2頁
安全即時(shí)通訊軟件論文_第3頁
安全即時(shí)通訊軟件論文_第4頁
安全即時(shí)通訊軟件論文_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

課程設(shè)計(jì)(論文)說明書題目:平安即時(shí)通訊軟件學(xué)院:計(jì)算機(jī)科學(xué)與工程學(xué)院專業(yè):姓名:學(xué)號:指導(dǎo)教師:2011年09月09日

摘要隨著現(xiàn)代技術(shù)的高度快速開展,網(wǎng)絡(luò)技術(shù)的也不斷開展,凡事都有兩面性,網(wǎng)絡(luò)技術(shù)的高度開展的同時(shí)同樣會帶來負(fù)面性,人們的信息得不到平安的保障,為此保護(hù)人們的隱私就變得越來越重要。如人們的個(gè)人信息經(jīng)常通過網(wǎng)絡(luò)間的傳遞、電子商務(wù)等方面都需要大力的保護(hù),為此信息保密技術(shù)也就隨之產(chǎn)生。信息的保密技術(shù)主要是由加密技術(shù)實(shí)現(xiàn),常見的加密算法有多種,有非對稱的RSA、對稱的DES、生成消息摘要的MD5等。為了保護(hù)用戶之間網(wǎng)絡(luò)通訊的平安,本系統(tǒng)實(shí)現(xiàn)用戶之間的平安聊天,聊天消息經(jīng)過經(jīng)典的DES加密算法后再傳送,這樣在網(wǎng)絡(luò)之間傳輸?shù)氖亲屓丝床欢拿芪模捎肨CP協(xié)議,確保信息的平安,平安穩(wěn)定,實(shí)用性非常高。Java語言具有簡單、平安、可移植、面向?qū)ο?、健壯、多線程、體系結(jié)構(gòu)中立、解釋執(zhí)行、高性能、分布式和動(dòng)態(tài)等主要特點(diǎn)。起初java還有一些弊病,但是隨著現(xiàn)代技術(shù)的高速開展,硬件的限制幾乎不再存在。java本身封裝性很好,利用Java語言中秘密密鑰工廠對RSA、DES、MD5、算法的支持,使得本系統(tǒng)可以對消息進(jìn)行加密,生成消息摘要,進(jìn)行數(shù)字簽名保存等功能。關(guān)鍵詞:加密;解密;DES;RSA;MD5;JAVA;平安聊天目錄引言………………41系統(tǒng)的目標(biāo)及任務(wù)……………61.1建設(shè)目標(biāo)……………………71.2系統(tǒng)的主要任務(wù)……………………71.3系統(tǒng)性能指標(biāo)……………………71.4系統(tǒng)化標(biāo)準(zhǔn)要求……………………72系統(tǒng)需求分析……………………72.1系統(tǒng)的詳細(xì)需求……………………72.2使用環(huán)境……………………112.3可行性分析……………………113軟件開發(fā)過程…………………124關(guān)鍵技術(shù) ……………115軟件測試過程……………………55.1測試環(huán)境……………………155.2功能測試 ………165.3性能測試………166使用說明………167結(jié)論 …………17參考文獻(xiàn) ...............................................................................18引言隨后網(wǎng)絡(luò)技術(shù)的開展,人們的信息平安越來越重要了,這就要對信息進(jìn)行保密,這來自各方面的壓力,黑客入侵,病毒等等都不能是我們的信息保證平安,這就要求我們對重要的信息進(jìn)行加密,讓別人就算獲取這些信息也不能明白這些信息的含義,真正做到保密性。對于對稱算法來說,無論是從實(shí)用性還是從平安性,DES算法無疑是一個(gè)好的選擇。但是對于非對稱算法來說RSA也是一個(gè)很好的算法加密。對于獲取消息摘要的來MD5和SHA-1都是不錯(cuò)的選擇。DES(dataencryptionStandard)是一種世界標(biāo)準(zhǔn)的加密形式,已經(jīng)15年歷史了,雖然有些老,可還算是比擬可靠的算法。在七十的初期,隨著計(jì)算機(jī)之間的通信開展,需要有一種標(biāo)準(zhǔn)密碼算法為了限制不同算法的激增使它們之間不能互相對話。為解決這個(gè)問題,美國國家平安局(N.S.A)進(jìn)行招標(biāo)。I.B.M公司開發(fā)了一種算法,稱為:Lucifer。經(jīng)過幾年的研討和修改,這種算法,成為了今天的D.E.S,1976年11月23日,終于被美國國家平安局采用。D.E.S是分塊加密的,將明文分割成64BITS的塊,然后它們一個(gè)個(gè)接起來。它使用56位密鑰對64位的數(shù)據(jù)塊進(jìn)行加密,并對64bits的數(shù)據(jù)塊進(jìn)行16輪編碼。與每輪編碼時(shí),一個(gè)48bits的“每輪〞密鑰值由56bits的完整密鑰得出來。DES用軟件進(jìn)行解碼需要用很長時(shí)間,而用硬件解碼速度非??欤?977年,人們估計(jì)要耗資兩千萬美元才能建成一個(gè)專門計(jì)算機(jī)用于DES的解密,而且需要12個(gè)小時(shí)的破解才能得到結(jié)果。所以,當(dāng)時(shí)DES被認(rèn)為是一種十分強(qiáng)壯的加密方法,所以對于不是很高機(jī)密行的信息,一般都可以用之進(jìn)行加密了。RSA算法是第一個(gè)能同時(shí)用于加密和數(shù)字簽名的算法,也易于理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在已近二十年,經(jīng)歷了各種攻擊的考驗(yàn),逐漸為人們接受,普遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一。RSA的平安性依賴于大數(shù)的因子分解,但并沒有從理論上證明破譯RSA的難度與大數(shù)分解難度等價(jià)。即RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學(xué)界多數(shù)人士傾向于因子分解不是NPC問題。RSA的缺點(diǎn)主要有:A)產(chǎn)生密鑰很麻煩,受到素?cái)?shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密。B)分組長度太大,為保證平安性,n至少也要600bits以上,使運(yùn)算代價(jià)很高,尤其是速度較慢,較對稱密碼算法慢幾個(gè)數(shù)量級;且隨著大數(shù)分解技術(shù)的開展,這個(gè)長度還在增加,不利于數(shù)據(jù)格式的標(biāo)準(zhǔn)化。目前,SET(SecureElectronicTransaction)協(xié)議中要求CA采用2048bits長的密鑰,其他實(shí)體使用1024比特的密鑰。C)RSA密鑰長度隨著保密級別提高,增加很快。RSA為非對稱算法,適用于數(shù)字簽名。數(shù)字簽名〔DigitalSignature〕技術(shù)是非對稱加密算法的典型應(yīng)用。數(shù)字簽名的應(yīng)用過程是,數(shù)據(jù)源發(fā)送方使用自己的私鑰對數(shù)據(jù)校驗(yàn)或其他與數(shù)據(jù)內(nèi)容有關(guān)的變量進(jìn)行加密處理,完成對數(shù)據(jù)的合法“簽名〞,數(shù)據(jù)接收方那么利用對方的公鑰來解讀收到的“數(shù)字簽名〞,并將解讀結(jié)果用于對數(shù)據(jù)完整性的檢驗(yàn),以確認(rèn)簽名的合法性。數(shù)字簽名技術(shù)是在網(wǎng)絡(luò)系統(tǒng)虛擬環(huán)境中確認(rèn)身份的重要技術(shù),完全可以代替現(xiàn)實(shí)過程中的“親筆簽字〞,在技術(shù)和法律上有保證。在數(shù)字簽名應(yīng)用中,發(fā)送者的公鑰可以很方便地得到,但他的私鑰那么需要嚴(yán)格保密。隨著信息技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的開展,其應(yīng)用涉及到政府、軍事、文教、商業(yè)、金融等諸多領(lǐng)域。如商業(yè)經(jīng)濟(jì)信息系統(tǒng)、政府機(jī)關(guān)信息系統(tǒng)、銀行業(yè)務(wù)系統(tǒng)、證券業(yè)務(wù)系統(tǒng)、科研數(shù)據(jù)傳輸?shù)?,這些系統(tǒng)都涉及到機(jī)密信息的傳輸與存儲。信息時(shí)代雖然帶給我們無限的商機(jī)與方便,但也充滿著隱患與危險(xiǎn)。由于網(wǎng)絡(luò)容易受到攻擊,導(dǎo)致機(jī)密信息的泄密,輕那么引發(fā)企業(yè)、部門工作陷于癱瘓而造成巨大的經(jīng)濟(jì)損失,重那么危及國家、軍事平安和社會穩(wěn)定。所以網(wǎng)絡(luò)信息平安已成為保證國民經(jīng)濟(jì)信息化建設(shè)健康開展的根底,直接關(guān)系到國家的平安,其影響重大。如何保證機(jī)密信息不泄漏,鑒別信息來源的真實(shí)性,確保信息的完整性和不可抵賴性,就是網(wǎng)絡(luò)信息平安研究需要解決的問題。網(wǎng)絡(luò)平安的目標(biāo)應(yīng)當(dāng)滿足:身份真實(shí)性、信息機(jī)密性、信息完整性、效勞可用性、不可否認(rèn)性、系統(tǒng)可控性、系統(tǒng)易用性、可審查性等等。數(shù)字簽名技術(shù)是網(wǎng)絡(luò)平安的重要手段之一,它可以保證信息完整性、鑒別發(fā)送者的身份真實(shí)性與不可否認(rèn)性;再運(yùn)用數(shù)字簽名本身的根底技術(shù)如加密技術(shù)可以保證信息機(jī)密性;如再運(yùn)用審計(jì)日志的方法,可完成可審查性的功能。數(shù)字簽名技術(shù)是當(dāng)前網(wǎng)絡(luò)平安領(lǐng)域的研究熱點(diǎn)。數(shù)字簽名的特性及可防御的網(wǎng)絡(luò)威脅可以概括為:身份鑒別,可鑒別信源的真實(shí)性而防止冒充;數(shù)據(jù)完整性保護(hù),抵御數(shù)據(jù)的篡改或重排;不可抵賴性,信源事后不可否認(rèn)以防止其抵賴;一般還使用加密技術(shù)保護(hù)信息機(jī)密性,以防截聽攻擊;參加流水號等技術(shù),可防重放攻擊。所以,數(shù)字簽名技術(shù)滿足網(wǎng)絡(luò)平安的目標(biāo)即身份真實(shí)性、信息機(jī)密性、信息完整性、效勞可用性、不可否認(rèn)性、系統(tǒng)可控性、系統(tǒng)易用性、可審查性等等。特別是其身份鑒別、數(shù)據(jù)完整性和不可抵賴性在電子商務(wù)、電子政務(wù)等應(yīng)用領(lǐng)域中有很重要的作用[1]。作為網(wǎng)絡(luò)平安的關(guān)鍵性技術(shù)之一,數(shù)字簽名在社會生活的各個(gè)領(lǐng)域也都具有十分廣闊的應(yīng)用前景。1991年,Rivest開發(fā)出技術(shù)上更為趨近成熟的md5算法。它在MD4的根底上增加了"平安-帶子"〔safety-belts〕的概念。雖然MD5比MD4稍微慢一些,但卻更為平安。這個(gè)算法很明顯的由四個(gè)和MD4設(shè)計(jì)有少許不同的步驟組成。在MD5算法中,信息-摘要的大小和填充的必要條件與MD4完全相同。Denboer和Bosselaers曾發(fā)現(xiàn)MD5算法中的假沖突〔pseudo-collisions〕,但除此之外就沒有其他被發(fā)現(xiàn)的加密后結(jié)果了。Vanoorschot和Wiener曾經(jīng)考慮過一個(gè)在散列中暴力搜尋沖突的函數(shù)〔brute-forcehashfunction〕,而且他們猜想一個(gè)被設(shè)計(jì)專門用來搜索MD5沖突的機(jī)器〔這臺機(jī)器在1994年的制造本錢大約是一百萬美元〕可以平均每24天就找到一個(gè)沖突。但單從1991年到2001年這10年間,竟沒有出現(xiàn)替代MD5算法的MD6或被叫做其他什么名字的新算法這一點(diǎn),我們就可以看出這個(gè)瑕疵并沒有太多的影響MD5的平安性。上面所有這些都缺乏以成為MD5的在實(shí)際應(yīng)用中的問題。并且,由于MD5算法的使用不需要支付任何版權(quán)費(fèi)用的,所以在一般的情況下〔非絕密應(yīng)用領(lǐng)域。但即便是應(yīng)用在絕密領(lǐng)域內(nèi),MD5也不失為一種非常優(yōu)秀的中間技術(shù)〕,MD5怎么都應(yīng)該算得上是非常平安的了。MD5用的是哈希函數(shù),在計(jì)算機(jī)網(wǎng)絡(luò)中應(yīng)用較多的不可逆加密算法有RSA公司創(chuàng)造的MD5算法和由美國國家技術(shù)標(biāo)準(zhǔn)研究所建議的平安散列算法SHA。1系統(tǒng)的目標(biāo)及任務(wù)1.1建設(shè)目標(biāo)平安即時(shí)通訊軟件依據(jù)開發(fā)要求對人們?nèi)粘P畔⑦M(jìn)行保密的開發(fā)的,符合人們的要求標(biāo)準(zhǔn),采用多線程開發(fā)模式,用戶之前可以隨意發(fā)送通訊消息,省去了一人一句的局面。本系統(tǒng)可以實(shí)現(xiàn)平安消息傳遞,因?yàn)閭鬟f的消息都是進(jìn)過用DES加密生成的密文傳送的,即使攻擊者截獲了消息,沒有密鑰也不能獲取消息內(nèi)容。本系統(tǒng)還能對消息生成消息摘要,然后用使用者的油非對稱算法RSA生成的私鑰進(jìn)行消息摘要簽名,讓使用者對消息具有不可否認(rèn)性的功能,保持消息的完整性和不可篡改性。1.2系統(tǒng)的主要任務(wù)平安即時(shí)通訊軟件主要任務(wù)就是要能夠使用戶之前建立了連接之后可以任意發(fā)送聊天消息,消息的發(fā)送是沒有限制的,對信息進(jìn)行保密,能對信息進(jìn)行加密解密,應(yīng)用于聊天的信息,在網(wǎng)絡(luò)中傳輸?shù)亩际且悦芪膫鬏數(shù)模云桨残钥梢哉f是很好,應(yīng)該讓使用者具有不可否認(rèn)性得功能,用使用者的私鑰來進(jìn)行消息摘要簽名。1.3系統(tǒng)性能指標(biāo)平安即時(shí)通訊軟件是采用Java語言來實(shí)現(xiàn)的,Java語言用得廣泛,具有跨平臺性。其中用的加密算法是DES、和RSA、MD5、,對于聊天消息加密,采用對稱算法DES進(jìn)行加密,對于消息保存用哈希算法MD5進(jìn)行消息摘要的生成,然后用非對稱算法RSA進(jìn)行簽名,這樣就很好的結(jié)合,這樣的結(jié)合具有平安,不可否認(rèn)性。1.4系統(tǒng)標(biāo)準(zhǔn)化要求平安即時(shí)通訊軟件是針對現(xiàn)實(shí)中的具體要求而設(shè)計(jì)的,系統(tǒng)所實(shí)現(xiàn)的功能都是又javaJDK中提供的標(biāo)準(zhǔn)算法,是符合設(shè)計(jì)要求的,具有標(biāo)準(zhǔn)性。2系統(tǒng)需求分析2.1系統(tǒng)的詳細(xì)需求功能需求平安即時(shí)通訊軟件設(shè)計(jì)的目的就是為了人們信息的保密性,可以讓不是自己授權(quán)的人們無法獲取其信息來對信息進(jìn)行保密。軟件設(shè)計(jì)符合現(xiàn)實(shí)狀況的需求,能對信息信息加密解密和平安聊天,在網(wǎng)絡(luò)中傳輸?shù)亩际敲芪?,如果沒有解密密鑰的話,就不能真正的獲取里面的消息內(nèi)容,可以對一般的字符串和文件進(jìn)行加密解密,可以進(jìn)行一對一的平安聊天。使用范圍平安即時(shí)通訊軟件是針對現(xiàn)實(shí)狀況而設(shè)計(jì)的,具有使用的廣泛性,使用界面有良好的提示,用戶只要根據(jù)提示一步一步使用即可,無須擔(dān)憂使用不方便的問題存在。業(yè)務(wù)流程具體如圖:開始開始登錄界面登錄界面登錄/注冊注冊 登錄(驗(yàn)證用戶名和密碼)登錄/注冊聊天主界面聊天主界面連接遠(yuǎn)程效勞器注冊用戶連接遠(yuǎn)程效勞器注冊用戶保存聊天記錄保存聊天記錄返回結(jié)果返回結(jié)果產(chǎn)生RSA密鑰簽名并保存文件產(chǎn)生RSA密鑰簽名并保存文件退出到登錄界面退出到登錄界面圖2-1業(yè)務(wù)流程圖用戶界面開始界面:用戶輸入密鑰進(jìn)行匹配,正確的就進(jìn)入聊天界面圖2-2客戶登錄界面通訊界面-------客戶端(平安聊天),:用戶雙發(fā)建立連接后可以進(jìn)行平安通信圖2-3客戶—客戶端聊天界面客戶端在控制臺輸出消息密文:傳輸過程中以密文形式進(jìn)行圖2-4客戶—客戶端控制臺輸出通訊界面-------效勞器(平安聊天)圖2-5客戶—效勞器聊天界面效勞器在控制臺輸出消息密文:圖2-6客戶—效勞器端控制臺輸出 聊天記錄保存:用戶可以查看自己發(fā)送過的消息密文,并對消息密文存檔和簽名圖2-7消息保存界面在e:\下有message.txt文件:該文件記錄這用戶本次的整個(gè)聊天記錄圖2-8消息保存本地界面message.txt文件內(nèi)容為:圖2-9消息具體內(nèi)容輸出要求平安即時(shí)通訊軟件輸出都是通過在界面上顯示.對用戶不合法的輸入會有向的提示能,比方客戶端如果輸入的IP和端口號不可用的時(shí)候,會提示無法與固定的IP進(jìn)行連接通話。圖2-10無法連接對方提示在保存聊天記錄的時(shí)候,如果忘記輸入路徑的話,會提示:圖2-11消息保存路徑不對提示當(dāng)保存記錄成功的時(shí)候會提示:圖2-12消息密文保存成功提示當(dāng)用戶通過發(fā)送byte要求結(jié)束通話的時(shí)候,消息發(fā)送編輯框提示和發(fā)送按鈕都不可用:圖2-13結(jié)束通話狀態(tài)提示故障處理平安即時(shí)通訊軟件針對可以出現(xiàn)的異常都進(jìn)行捕獲,如果出項(xiàng)異常也不會對軟件有所影響,所以有很好的故障處理能力,不用擔(dān)憂存在著不可預(yù)測的不可用性。2.2使用環(huán)境網(wǎng)絡(luò)環(huán)境:平安即時(shí)通訊軟件對網(wǎng)絡(luò)有一定的要求,能夠進(jìn)行網(wǎng)絡(luò)聊天。硬件環(huán)境:筆記本,電腦性能只要一般就OK了,要有JAVA虛擬機(jī)即可;軟件環(huán)境:JAVA虛擬機(jī)。其他系統(tǒng)關(guān)系:win7、XP等都可以。2.3可行性分析技術(shù)可行性:平安即時(shí)通訊軟件所用的開發(fā)語言是具有平臺無異性的java語言,具有很好的擴(kuò)展性,對操作系統(tǒng)沒有什么硬性的要求,能跑一般的程序即可。軟件中所用到的加密算法都是有平安性保證的,無需擔(dān)憂其平安性問題。經(jīng)濟(jì)可行性:平安即時(shí)通訊軟件有很好的操作性,能對公司企業(yè)的信息進(jìn)行加密保密,預(yù)防中重要的信息泄密,當(dāng)然具有很好的經(jīng)濟(jì)可行性。人員可行性:只要對電腦有稍微熟悉的,對自己工作有一定了解的人都可以進(jìn)行操作,不擔(dān)憂用戶不會用的問題存在。影響系統(tǒng)開發(fā)的因素:暫時(shí)沒有發(fā)現(xiàn)。3系統(tǒng)設(shè)計(jì)平安即時(shí)通訊軟件平安即時(shí)通訊軟件功能模塊圖:數(shù)字簽名消息摘要消息保存平安聊天注冊登錄數(shù)字簽名消息摘要消息保存平安聊天注冊登錄圖3-1功能模塊圖4關(guān)鍵技術(shù)〔1〕DES加解密://確定算法和初始化密鑰和加密解密工具publicDes(StringstrKey)throwsException{ Keykey=getKey(strKey.getBytes());encryptCipher=Cipher.getInstance("DES");//獲得加密工具encryptCipher.init(Cipher.ENCRYPT_MODE,key);//初始化加密工具decryptCipher=Cipher.getInstance("DES");//獲得解密工具decryptCipher.init(Cipher.DECRYPT_MODE,key);初始化解密工具}//字符串加密方法publicbyte[]encrypt(byte[]arrB)throwsException{returnencryptCipher.doFinal(arrB);}//字符串解密方法publicbyte[]decrypt(byte[]arrB)throwsException{returndecryptCipher.doFinal(arrB);}//將byte數(shù)組轉(zhuǎn)化為十六進(jìn)制publicStringbyteArr2HexStr(byte[]arrB)throwsException{intiLen=arrB.length;//每個(gè)byte用兩個(gè)字符才能表示,所以字符串的長度是數(shù)組長度的兩倍 StringBuffersb=newStringBuffer(iLen*2);for(inti=0;i<iLen;i++){intintTmp=arrB[i];//把負(fù)數(shù)轉(zhuǎn)換為正數(shù)while(intTmp<0){ intTmp=intTmp+256; }//小于0F的數(shù)需要在前面補(bǔ)0if(intTmp<16){ sb.append("0"); } sb.append(Integer.toString(intTmp,16)); }returnsb.toString();}//將十六進(jìn)制轉(zhuǎn)化為byte數(shù)組publicstaticbyte[]hexStr2ByteArr(StringstrIn)throwsException{byte[]arrB=strIn.getBytes();intiLen=arrB.length;//兩個(gè)字符表示一個(gè)字節(jié),所以字節(jié)數(shù)組長度是字符串長度除以2byte[]arrOut=newbyte[iLen/2];for(inti=0;i<iLen;i=i+2){ StringstrTmp=newString(arrB,i,2); arrOut[i/2]=(byte)Integer.parseInt(strTmp,16); }returnarrOut; }(2)RSA加解密//產(chǎn)生密鑰方法publicvoidcreateKey()throwsNoSuchAlgorithmException, FileNotFoundException,IOException{/**為RSA算法創(chuàng)立一個(gè)KeyPairGenerator對象*/ KeyPairGeneratorkeyPairGen=KeyPairGenerator.getInstance("RSA");/**利用上面的隨機(jī)數(shù)據(jù)源初始化這個(gè)KeyPairGenerator對象*/ keyPairGen.initialize(1024);/**生成密匙對*/ KeyPairkeyPair=keyPairGen.generateKeyPair();/**得到公鑰*/ KeypublicKey=keyPair.getPublic();/**得到私鑰*/ KeyprivateKey=keyPair.getPrivate();/**用對象流將生成的密鑰寫入文件*/ ObjectOutputStreamoos1=newObjectOutputStream(newFileOutputStream(PUBLIC_KEY_FILE)); ObjectOutputStreamoos2=newObjectOutputStream(newFileOutputStream(PRIVATE_KEY_FILE)); oos1.writeObject(publicKey); oos2.writeObject(privateKey);/**清空緩存,關(guān)閉文件輸出流*/ oos1.close(); oos2.close(); }//字符串加密方法publicbyte[]encrypt(byte[]b)throwsException{ ObjectInputStreaminputStream=newObjectInputStream(newFileInputStream(PRIVATE_KEY_FILE));key=(Key)inputStream.readObject(); inputStream.close();/**得到Cipher對象來實(shí)現(xiàn)對源數(shù)據(jù)的RSA進(jìn)行數(shù)字簽名*/ Ciphercipher=Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE,key);/**執(zhí)行加密操作*/byte[]b1=cipher.doFinal(b);returnb1;}//字符串解密方法:publicbyte[]decrypt(byte[]buf)throwsException{ ObjectInputStreaminputStream=newObjectInputStream(newFileInputStream(PUBLIC_KEY_FILE));key=(Key)inputStream.readObject(); inputStream.close();/**得到Cipher對象對已用私鑰簽名的數(shù)據(jù)進(jìn)行RSA解密*/ Ciphercipher=Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE,key);/**執(zhí)行解密操作*/byte[]b=cipher.doFinal(buf);returnb;}MD5消息摘要//生成消息摘要方法privateStringencrypt(StringinputText){try{//獲得MD5摘要類 MessageDigestm=MessageDigest.getInstance("md5");//將消息轉(zhuǎn)換為字節(jié)數(shù)組 m.update(inputText.getBytes("UTF8"));//生成消息摘要字節(jié)數(shù)組bytes[]=m.digest();returnhex(s); }catch(NoSuchAlgorithmExceptione){ e.printStackTrace(); }catch(UnsupportedEncodingExceptione){ e.printStackTrace(); }returnnull; }平安聊天//消息發(fā)送方法publicvoidsendData()throwsException{ PrintWriterout=newPrintWriter(newBufferedWriter(//獲取對輸出流〔發(fā)送數(shù)據(jù)〕的控制 newOutputStreamWriter(socket.getOutputStream())),true); StringmessageString=sendmessage.getText();//對輸入消息進(jìn)行用des加密 Strings=des.encrypt(messageString); //發(fā)送給對方 out.println(s);//判斷是否為byte結(jié)束if(messageString.equals("byte")){//斷開連接,釋放資源if(socket!=null){socket=null; }if(serverSocket!=null){serverSocket=null; } } }//消息接收方法publicvoidreceiveData()throwsException{//獲取網(wǎng)絡(luò)輸入流的控制 BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));//獲取一行消息 Stringstr=in.readLine();if(str.equals("byte")){if(socket!=null){socket=null; }if(serverSocket!=null){serverSocket=null; } } }消息保存publicvoidwrite_file(Stringmessages){ StringpathString=path_jTextField.getText();//判斷路徑輸入if(pathString.length()<3){ JOptionPane.showMessageDialog(null,"請輸入正確路徑!");return; } pathString=pathString+"\\message.txt"; Filefile=newFile(pathString);try{ FileWriterfileWriter=newFileWriter(file);//寫入文件 fileWriter.write(messages); JOptionPane.showMessageDialog(null,"密文已經(jīng)保存成功!"); fileWriter.close(); }catch(IOExceptione1){ e1.printStackTrace(); } }5軟件測試過程5.1測試環(huán)境①硬件環(huán)境:筆記本電腦一臺②軟件環(huán)境:eclipse編譯環(huán)境③網(wǎng)絡(luò)環(huán)境:良好的網(wǎng)絡(luò)環(huán)境5.2功能測試①模擬現(xiàn)場測試:RSA生成密鑰成功,加密字符串,解密字符串,生成消息摘要成功,對消息摘要進(jìn)行數(shù)字簽名成功,平安聊天成功,保存文件成功完全到達(dá)預(yù)期的效果。②應(yīng)用現(xiàn)場測試:和模擬現(xiàn)場測試一樣,沒有數(shù)據(jù)出錯(cuò)。5.3性能測試平安即時(shí)通訊軟件性能表現(xiàn)很好,從開始到現(xiàn)實(shí)界面的時(shí)間不長,在用戶可以忍受的范圍了,對于造成這種情況的是java這門語言本身造成的。在平安聊天過程中,用戶的消息都是經(jīng)過DES加密算法生成密文后再用TCP協(xié)議發(fā)送的,這樣用戶之前聊天就變得穩(wěn)定平安。當(dāng)結(jié)束聊天后,如果

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論