版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、棗 莊 學(xué) 院信息科學(xué)與工程學(xué)院課程設(shè)計(jì)任務(wù)書(shū)題 目: rc4加密算法的實(shí)現(xiàn)學(xué) 號(hào): 姓 名: 專(zhuān) 業(yè): 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù) 課 程: 計(jì)算機(jī)網(wǎng)絡(luò)安全教程 指導(dǎo)教師: 職稱(chēng): 教 師 完成時(shí)間: 2012年 11月-2012 年 12 月棗莊學(xué)院信息科學(xué)與工程學(xué)院制一.系統(tǒng)設(shè)計(jì)的目標(biāo)隨著信息化的發(fā)展,人們?cè)谛畔鬟f,數(shù)據(jù)共享等方面的要求越來(lái)越高。但與此同時(shí),數(shù)據(jù)的保密、個(gè)人的隱私保護(hù)也越來(lái)越困難,迫使人們不得不采取相應(yīng)的措施來(lái)提高信息的安全性。在此條件下,加密技術(shù)應(yīng)運(yùn)而生。加密作為一把系統(tǒng)安全的鑰匙,是實(shí)現(xiàn)信息安全的重要手段之一,正確的使用加密技術(shù)可以確保信息的安全。人們所熟悉的加密技術(shù)很多,比如
2、數(shù)字簽名、版權(quán)注冊(cè)、軟盤(pán)加密、軟件鎖等等。本人的設(shè)計(jì)思想是利用文件夾的加密來(lái)實(shí)現(xiàn)對(duì)軟件或文件的安全加密。在此設(shè)計(jì)基礎(chǔ)上編寫(xiě)了一個(gè)程序,該軟件操作簡(jiǎn)單方便,適用于個(gè)人pc上對(duì)文件的加密。用戶可自選密鑰對(duì)重要文件或可執(zhí)行程序進(jìn)行加密,防止未授權(quán)用戶竊密。本文描述了利用文件夾的加密來(lái)實(shí)現(xiàn)對(duì)文件或程序的保護(hù)方案。采用了“對(duì)稱(chēng)式”加密技術(shù)即采用文件逐字節(jié)與密碼異或方式對(duì)文件或可執(zhí)行程序加密。選用c+編程語(yǔ)言,設(shè)計(jì)了一個(gè)加密程序,該程序不拘泥于花俏的界面,僅使用了一個(gè)簡(jiǎn)單的對(duì)話框,具有簡(jiǎn)單實(shí)用的特點(diǎn)。在該方案的實(shí)現(xiàn)中,由于使用了可靠的密碼學(xué)算法,使軟件加密的強(qiáng)度大大提高。二.系統(tǒng)原理:1. rc4加密算法
3、原理: rc4加密算法是大名鼎鼎的rsa三人組中的頭號(hào)人物ron rivest在1987年設(shè)計(jì)的密鑰長(zhǎng)度可變的流加密算法簇。之所以稱(chēng)其為簇,是由于其核心部分的s-box長(zhǎng)度可為任意,但一般為256字節(jié)。該算法的速度可以達(dá)到des加密的10倍左右。 rc4算法的原理很簡(jiǎn)單,包括初始化算法和偽隨機(jī)子密碼生成算法兩大部分。假設(shè)s-box長(zhǎng)度和密鑰長(zhǎng)度均為為n。先來(lái)看看算法的初始化部分(用類(lèi)c偽代碼表示): for (i=0; in; i+) s=i; j=0; for (i=0; in; i+) j=(j+s+k)%256; swap(s, sj); 在初始化的過(guò)程中,密鑰的主要功能是將s-box攪
4、亂,i確保s-box的每個(gè)元素都得到處理,j保證s-box的攪亂是隨機(jī)的。而不同的s-box在經(jīng)過(guò)偽隨機(jī)子密碼生成算法的處理后可以得到不同的子密鑰序列,并且,該序列是隨機(jī)的: i=j=0; while (明文未結(jié)束) +i%=n; j=(j+s)%n; swap(s, sj); sub_k=s(s+sj)%n); 得到的子密碼sub_k用以和明文進(jìn)行xor運(yùn)算,得到密文,解密過(guò)程也完全相同。 由于rc4算法加密是采用的xor,所以,一旦子密鑰序列出現(xiàn)了重復(fù),密文就有可能被破解。關(guān)于如何破解xor加密,請(qǐng)參看bruce schneier的applied cryptography一書(shū)的1.4節(jié)si
5、mple xor,在此我就不細(xì)說(shuō)了。那么,rc4算法生成的子密鑰序列是否會(huì)出現(xiàn)重復(fù)呢?經(jīng)過(guò)我的測(cè)試,存在部分弱密鑰,使得子密鑰序列在不到100萬(wàn)字節(jié)內(nèi)就發(fā)生了完全的重復(fù),如果是部分重復(fù),則可能在不到10萬(wàn)字節(jié)內(nèi)就能發(fā)生重復(fù),因此,推薦在使用rc4算法時(shí),必須對(duì)加密密鑰進(jìn)行測(cè)試,判斷其是否為弱密鑰。 但在2001年就有以色列科學(xué)家指出rc4加密算法存在著漏洞,這可能對(duì)無(wú)線通信網(wǎng)絡(luò)的安全構(gòu)成威脅。 以色列魏茨曼研究所和美國(guó)思科公司的研究者發(fā)現(xiàn),在使用“有線等效保密規(guī)則”(wep)的無(wú)線網(wǎng)絡(luò)中,在特定情況下,人們可以逆轉(zhuǎn)rc4算法的加密過(guò)程,獲取密鑰,從而將己加密的信息解密。實(shí)現(xiàn)這一過(guò)程并不復(fù)雜,只
6、需要使用一臺(tái)個(gè)人電腦對(duì)加密的數(shù)據(jù)進(jìn)行分析,經(jīng)過(guò)幾個(gè)小時(shí)的時(shí)間就可以破譯出信息的全部?jī)?nèi)容。 專(zhuān)家說(shuō),這并不表示所有使用rc4算法的軟件都容易泄密,但它意味著rc4算法并不像人們?cè)日J(rèn)為的那樣安全。這一發(fā)現(xiàn)可能促使人們重新設(shè)計(jì)無(wú)線通信網(wǎng)絡(luò),并且使用新的加密算法。三. 系統(tǒng)功能分析:圖1:系統(tǒng)功能圖四.系統(tǒng)實(shí)現(xiàn): 設(shè)計(jì)的核心部分仍是算法的核心部分,根據(jù)des算法的原理,建立相關(guān)的變量,和函數(shù),完成對(duì)8位字符的加密,解密。而對(duì)于文件的加密與解密只需要在文件的讀取時(shí),按加密的位數(shù)讀取然后調(diào)用算法,加密后保存到一個(gè)文件,一直到文件的末尾,從而實(shí)現(xiàn)文件的加密。而解密是加密的逆過(guò)程,只要將密鑰按反順序使用即可
7、,算法一致,調(diào)用的函數(shù)也都一樣。1.功能要求(1)設(shè)計(jì)操作界面;(如圖3) 圖3(2)對(duì)輸入的明文可以進(jìn)行加解密;(如圖4)(3)對(duì)指定的文件可以加解密。(圖5)對(duì)文件夾進(jìn)行解密:(圖6)詳細(xì)設(shè)計(jì) 字符加解密數(shù)據(jù)流圖 明文明文傳輸密文加密密鑰解密密鑰解密加密明文明文傳輸密文加密密鑰解密密鑰解密加密明文明文傳輸密文加密密鑰解密密鑰解密加密 字符加解密數(shù)據(jù)流圖(7) 一層數(shù)據(jù)流圖(8) 二層數(shù)據(jù)流圖(9)附錄:源程序代碼:rc4算法的實(shí)現(xiàn):void rc4:swap(basetype *i,basetype *j)basetype temp;temp=*i;*i=*j;*j=temp;void r
8、c4:s_box(basetype *s,char *key,int keylen)int i=0,j=0;for(i=0;i256;i+)si=i;for(i=0;i256;i+)j=(j+si+keyi%keylen)%256;swap(&si,&sj);void rc4:encryption(char *src,char *key,int keylen,int srclen)int i=0,j=0,k=0,index=0;basetype s256;:memset(void *)s,0,256);s_box(s,key,keylen);for(i=0;idomodal()messageb
9、ox(open failly!,null,mb_ok);return;cstring filepath=fileopen-getpathname();m_srcfile.setwindowtext(lpctstr(filepath);保存文件:cstring lpszfilter=text file (*.txt)|*.txt|microsoft doc (*.doc)|*.doc|data files (*.xlc;*.xls)|*.xlc; *.xls|all files (*.*)|*.*|;cstring lpszdefext=.txt;cstring lpszfilename=*.t
10、xt;cfiledialog *filesave=new cfiledialog( false, lpszdefext, lpszfilename, ofn_hidereadonly | ofn_overwriteprompt, lpszfilter, null );cfile cfile;if(!filesave-domodal()messagebox(failed!,null,mb_ok);return;carchive ar(&cfile,carchive:load);cstring filepath=filesave-getpathname();m_detfile.setwindowt
11、ext(filepath);if(cfile.open(lpctstr(filepath),cfile:modecreate|cfile:modewrite)=0)messagebox(open failly!,null,mb_ok);return;文件加密:char key256;:memset(void *)key, ,256);char ch101;:memset(void *)ch, ,101);m_key.getwindowtext(key,strlen(key);cstring key1;key1.format(%s,key);if(key1.isempty()messagebox
12、(你還沒(méi)有輸入密鑰!,null,mb_ok);return;cstring srcfilepath( ,200);m_srcfile.getwindowtext(srcfilepath);if(srcfilepath.isempty()messagebox(你還沒(méi)有選擇源文件,null,mb_ok);return;cfile srcfile;if(srcfile.open(lpctstr(srcfilepath),cfile:moderead)=0)messagebox(源文件打開(kāi)失敗!,null,mb_ok);return;carchive srcar(&srcfile,carchive:l
13、oad);int filelen=srcfile.getlength();cstring detfilepath( ,200);m_detfile.getwindowtext(detfilepath);if(detfilepath.isempty()messagebox(你還沒(méi)有選擇目標(biāo)文件,null,mb_ok);return;cfile detfile;if(detfile.open(lpctstr(detfilepath),cfile:modecreate|cfile:modewrite)=0)messagebox(目標(biāo)文件打開(kāi)失敗!,null,mb_ok);return;cstring
14、 len;len.format(%d,filelen);if(filelen100)int k=0,i=0;k=filelen/100;for(i=0;ik;i+)srcfile.read(void *)ch,100);rc4.encryption(ch,key,strlen(key),100);detfile.write(void *)ch,100);k=filelen%100;if(k!=0)srcar.read(void *)ch,k);rc4.encryption(ch,key,strlen(key),k);detfile.write(void *)ch,k);messagebox(恭
15、喜您,加密成功!,null,mb_ok);srcfile.close();detfile.close();文件解密:char key256;:memset(void *)key, ,256);char ch101;:memset(void *)ch, ,101);m_key.getwindowtext(key,strlen(key);cstring key1;key1.format(%s,key);if(key1.isempty()messagebox(你還沒(méi)有輸入密鑰!,null,mb_ok);return;cstring srcfilepath( ,200);m_srcfile1.getw
16、indowtext(srcfilepath);if(srcfilepath.isempty()messagebox(你還沒(méi)有選擇源文件,null,mb_ok);return;cfile srcfile;if(srcfile.open(lpctstr(srcfilepath),cfile:moderead)=0)messagebox(源文件打開(kāi)失敗!,null,mb_ok);return;carchive srcar(&srcfile,carchive:load);int filelen=srcfile.getlength();cstring detfilepath( ,200);m_detfi
17、le1.getwindowtext(detfilepath);if(detfilepath.isempty()messagebox(你還沒(méi)有選擇目標(biāo)文件,null,mb_ok);return;cfile detfile;if(detfile.open(lpctstr(detfilepath),cfile:modecreate|cfile:modewrite)=0)messagebox(目標(biāo)文件打開(kāi)失敗!,null,mb_ok);return;cstring len;len.format(%d,filelen);if(filelen100)int k=0,i=0;k=filelen/100;fo
18、r(i=0;ik;i+)srcfile.read(void *)ch,100);rc4.encryption(ch,key,strlen(key),100);detfile.write(void *)ch,100);k=filelen%100;if(k!=0)srcar.read(void *)ch,k);rc4.encryption(ch,key,strlen(key),k);detfile.write(void *)ch,k);messagebox(恭喜您,解密成功!,null,mb_ok);srcfile.close();detfile.close();界面設(shè)計(jì):m_tab.insert
19、item(0, 字符串加密 );m_tab.insertitem(1, 文件加密 );cpage0.create(idd_page0_dialog,getdlgitem(idc_tab1);cpage1.create(idd_page1_dialog,getdlgitem(idc_tab1);crect rect; m_tab.getclientrect(&rect); rect.top+=20; rect.bottom-=4; rect.left+=4; rect.right-=4; cpage0.movewindow(&rect); cpage1.movewindow(&rect); cp
20、age0.showwindow(true); m_tab.setcursel(0);int cursel; cursel=m_tab.getcursel(); switch(cursel) case 0: cpage0.showwindow(true); cpage1.showwindow(false); break; case 1: cpage0.showwindow(false); cpage1.showwindow(true); break; case 2: cpage0.showwindow(false); cpage1.showwindow(false); break; defaul
21、t: ; *presult = 0;五.總結(jié):提出問(wèn)題:rc4加密后的的長(zhǎng)度是 多少(例如md5的加密后的長(zhǎng)度是固定的)? 用rc4加密后的字符串長(zhǎng)度和原來(lái)的一樣嗎? 用rc4加密后的字符串中間會(huì)不會(huì)出現(xiàn)0? 用strlen得到的長(zhǎng)度一定對(duì)嗎?解決問(wèn)題:在一些場(chǎng)合,常需要用到一些簡(jiǎn)單的加密算法,這里的rc4就可以說(shuō)是最簡(jiǎn)單的一種。只要設(shè)置一個(gè)足夠強(qiáng)的密碼,就可以適用于一些非常簡(jiǎn)單的場(chǎng)合了。我是用來(lái)加密http傳送的數(shù)據(jù)的。 rc4函數(shù)(加密/解密) 其實(shí),rc4只有加密,將密文再加密一次,就是解密了。 getkey函數(shù) 隨機(jī)字符串產(chǎn)生器,呵呵,為了方便,大多數(shù)加密算法都有一個(gè)隨機(jī)密碼產(chǎn)生器,我
22、也就附帶一個(gè)了。 bytetohex函數(shù) 把字節(jié)碼轉(zhuǎn)為十六進(jìn)制碼,一個(gè)字節(jié)兩個(gè)十六進(jìn)制。研究發(fā)現(xiàn),十六進(jìn)制字符串非常適合在http中傳輸,base64中的某些字符會(huì)造成轉(zhuǎn)義,挺麻煩的。 hextobyte函數(shù) 把十六進(jìn)制字符串,轉(zhuǎn)為字節(jié)碼。服務(wù)器也按照十六進(jìn)制字符串的形式把數(shù)據(jù)傳回來(lái),這里就可以解碼啦。同時(shí),使用十六進(jìn)制字符串傳輸,避開(kāi)了傳輸過(guò)程中多國(guó)語(yǔ)言的問(wèn)題。 encrypt函數(shù) 把字符串經(jīng)rc4加密后,再把密文轉(zhuǎn)為十六進(jìn)制字符串返回,可直接用于傳輸。 decrypt函數(shù) 直接密碼十六進(jìn)制字符串密文,再解密,返回字符串明文。六.心得體會(huì):課程設(shè)計(jì)不僅是對(duì)已學(xué)知識(shí)的檢驗(yàn),更是對(duì)學(xué)生動(dòng)手能力以及綜合能力的鍛煉。在我們小組組長(zhǎng)的帶領(lǐng)下,以及通過(guò)全小組同學(xué)的共同努力,我們完成了課程設(shè)計(jì)的任務(wù)。在此期間,我們溫故了課堂上學(xué)過(guò)的知識(shí),還有查找各種資料,對(duì)rc加密算法有了進(jìn)一步的了解和掌握。平常學(xué)習(xí)的知識(shí)點(diǎn),感覺(jué)已掌握,但是通過(guò)這次課程設(shè)計(jì)對(duì)自己學(xué)過(guò)的知識(shí)的檢閱,發(fā)現(xiàn)很多東西并不是想象的那么簡(jiǎn)單,做起來(lái)的時(shí)候還是會(huì)因?yàn)榇中拇笠鈱?dǎo)致課程設(shè)計(jì)中出現(xiàn)很多小的錯(cuò)誤。課程設(shè)計(jì)培養(yǎng)了自己的動(dòng)手能力,對(duì)以前學(xué)習(xí)的知識(shí)起到了好的鞏固作用,并且對(duì)以后課程學(xué)習(xí)打下
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TS 21219-13:2025 EN Intelligent transport systems - Traffic and travel information via transport protocol experts group,generation 2 (TPEG2) - Part 13: Public transport
- 2025標(biāo)準(zhǔn)農(nóng)田建設(shè)合同管理的任務(wù)和方法
- 2025員工個(gè)人勞動(dòng)合同
- 2025年度房屋置換增值服務(wù)全新房屋置換對(duì)方房屋置換及增值合同3篇
- 2025農(nóng)村合作建房項(xiàng)目施工臨時(shí)用電安全合同2篇
- 二零二五年度公司股權(quán)轉(zhuǎn)讓及后續(xù)管理服務(wù)合同3篇
- 二零二五年度房地產(chǎn)項(xiàng)目合作合同解除協(xié)議2篇
- 二零二五年度農(nóng)產(chǎn)品批發(fā)市場(chǎng)租賃合作合同3篇
- 二零二五年度智能家居產(chǎn)品開(kāi)發(fā)合作協(xié)議書(shū)3篇
- 二零二五年度辦公室租賃合同模板:含員工激勵(lì)及福利計(jì)劃3篇
- 部編人教版四年級(jí)數(shù)學(xué)上冊(cè)期末考試卷(可打印)
- 一例阿爾茨海默病患者的護(hù)理查房
- 農(nóng)貿(mào)市場(chǎng)安全生產(chǎn)工作方案
- 咸陽(yáng)租房合同
- 《鋼筋保護(hù)層檢測(cè)》課件
- YJ-T 27-2024 應(yīng)急指揮通信保障能力建設(shè)規(guī)范
- 合伙人協(xié)議書(shū)決策機(jī)制
- 西藏畜牧獸醫(yī)知識(shí)培訓(xùn)課件
- 護(hù)理專(zhuān)業(yè)人才培養(yǎng)方案論證報(bào)告
- 我的家鄉(xiāng)武漢
- 眼鏡制造業(yè)灌膠機(jī)市場(chǎng)前景與機(jī)遇分析
評(píng)論
0/150
提交評(píng)論