




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、莊學院信息科學與工程學院課程設計任務書題目:RC4加密算法的實現(xiàn)學號:姓名:專業(yè):計算機網絡技術課程:計算機網絡安全教程指導教師:職稱:教師完成時間:20XX年11月20XX年12月棗莊學院信息科學與工程學院制一.系統(tǒng)設計的目標隨著信息化的發(fā)展,人們在信息傳遞,數(shù)據共享等方面的要求越來越高。但與此同時,數(shù)據的保密、個人的隱私保護也越來越困難,迫使人們不得不采取相應的措施來提高信息的安全性。在此條件下,加密技術應運而生。加密作為一把系統(tǒng)安全的鑰匙,是實現(xiàn)信息安全的重要手段之一,正確的使用加密技術可以確保信息的安全。人們所熟悉的加密技術很多,比如數(shù)字簽名、版權注冊、軟盤加密、軟件鎖等等。本人的設計
2、思想是利用文件夾的加密來實現(xiàn)對軟件或文件的安全加密。在此設計基礎上編寫了一個程序,該軟件操作簡單方便,適用于個人PC上對文件的加密。用戶可自選密鑰對重要文件或可執(zhí)行程序進行加密,防止未授權用戶竊密。本文描述了利用文件夾的加密來實現(xiàn)對文件或程序的保護方案。采用了“對稱式”加密技術即采用文件逐字節(jié)與密碼異或方式對文件或可執(zhí)行程序加密。選用C+編程語言,設計了一個加密程序,該程序不拘泥于花俏的界面,僅使用了一個簡單的對話框,具有簡單實用的特點。在該方案的實現(xiàn)中,由于使用了可靠的密碼學算法,使軟件加密的強度大大提高。二.系統(tǒng)原理:1.RC4加密算法原理:RC4加密算法是大名鼎鼎的三人組中的頭號人物Ro
3、nRivest在1987年設計的密鑰長度可變的流加密算法簇。之所以稱其為簇,是由于其核心部分的S-box長度可為任意,但一般為256字節(jié)。該算法的速度可以達到DES加密的10倍左右。RC4算法的原理很簡單,包括初始化算法和偽隨機子密碼生成算法兩大部分。假設S-box長度和密鑰長度均為為n。先來看看算法的初始化部分(用類C偽代碼表示):for(i=0;in;i+)s=i;j=0;for(i=0;in;i+)j=(j+s+k)%256;swap(s,sj);在初始化的過程中,密鑰的主要功能是將S-box攪亂,i確保S-box的每個元素都得到處理,j保證S-box的攪亂是隨機的。而不同的S-box在
4、經過偽隨機子密碼生成算法的處理后可以得到不同的子密鑰序列,并且,該序列是隨機的:i=j=0;while(明文未結束)+i%=n;j=(j+s)%n;swap(s,sj);sub_k=s(s+sj)%n);得到的子密碼sub_k用以和明文進行xor運算,得到密文,解密過程也完全相同。由于RC4算法加密是采用的xor,所以,一旦子密鑰序列出現(xiàn)了重復,密文就有可能被破解。關于如何破解xor加密,請參看BruceSchneier的AppliedCryptography一書的1.4節(jié)SimpleXOR,在此我就不細說了。那么,RC4算法生成的子密鑰序列是否會出現(xiàn)重復呢?經過我的測試,存在部分弱密鑰,使得
5、子密鑰序列在不到100萬字節(jié)內就發(fā)生了完全的重復,如果是部分重復,則可能在不到10萬字節(jié)內就能發(fā)生重復,因此,推薦在使用RC4算法時,必須對加密密鑰進行測試,判斷其是否為弱密鑰。但在20XX年就有以色列科學家指出RC4加密算法存在著漏洞,這可能對無線通信網絡的安全構成威脅。以色列魏茨曼研究所和美國思科公司的研究者發(fā)現(xiàn),在使用“有線等效保密規(guī)則”(WEP)的無線網絡中,在特定情況下,人們可以逆轉RC4算法的加密過程,獲取密鑰,從而將己加密的信息解密。實現(xiàn)這一過程并不復雜,只需要使用一臺個人電腦對加密的數(shù)據進行分析,經過幾個小時的時間就可以破譯出信息的全部內容。專家說,這并不表示所有使用RC4算法
6、的軟件都容易泄密,但它意味著RC4算法并不像人們原先認為的那樣安全。這一發(fā)現(xiàn)可能促使人們重新設計無線通信網絡,并且使用新的加密算法。三.系統(tǒng)功能分析:RC4加密系統(tǒng)圖1:系統(tǒng)功能圖加解密功能輸入密鑰字符加密輸入密鑰1字符加密一輸入密鑰1r字符加密輸入密鑰字符加密系統(tǒng)實現(xiàn):設計的核心部分仍是算法的核心部分,根據des算法的原理,建立相關的變量,和函數(shù),完成對8位字符的加密,解密。而對于文件的加密與解密只需要在文件的讀取時,按加密的位數(shù)讀取然后調用算法,加密后保存到一個文件,一直到文件的末尾,從而實現(xiàn)文件的加密。而解密是加密的逆過程,只要將密鑰按反順序使用即可,算法一致,調用的函數(shù)也都一樣。1.功
7、能要求(1)設計操作界面;(如圖3)圖32)對輸入的明文可以進行加解密;(如圖4)3)對指定的文件可以加解密。(圖5)對文件夾進行解密:(圖6)詳細設計字符加解密數(shù)據流圖字符加解密數(shù)據流圖(7)二層數(shù)據流圖(9)附錄:源程序代碼:RC4算法的實現(xiàn):voidRC4:swap(baseType*i,baseType*j)baseTypetemp;temp=*i;*i=*j;*j=temp;voidRC4:s_box(baseType*s,char*key,intkeyLen)inti=0,j=0;for(i=0;i256;i+)si=i;for(i=0;i256;i+)j=(j+si+keyi%k
8、eyLen)%256;swap(&si,&sj);voidRC4:encryption(char*src,char*key,intkeyLen,intsrcLen)inti=0,j=0,k=0,index=0;baseTypes256;:memset(void*)s,0,256);s_box(s,key,keyLen);for(i=0;iDoModal()MessageBox(Openfailly!,NULL,MB_OK);return;CStringfilePath=fileOpen-GetPathName();m_srcFile.SetWindowText(LPCTSTR(filePath
9、);保存文件:CStringlpszFilter=textfile(*.txt)|*.txt|Microsoftdoc(*.doc)|*.doc|DataFiles(*.xlc;*.xls)|*.xlc;*.xls|AllFiles(*.*)|*.*|;CStringlpszDefExt=.txt;CStringlpszFileName=*.txt;CFileDialog*fileSave=newCFileDialog(false,lpszDefExt,lpszFileName,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,lpszFilter,NULL);CFil
10、ecFile;if(!fileSave-DoModal()MessageBox(failed!,NULL,MB_OK);return;CArchivear(&cFile,CArchive:load);CStringfilePath=fileSave-GetPathName();m_detFile.SetWindowText(filePath);if(cFile.Open(LPCTSTR(filePath),CFile:modeCreate|CFile:modeWrite)=0)MessageBox(Openfailly!,NULL,MB_OK);return;文件加密:charkey256;:
11、memset(void*)key,256);charch101;:memset(void*)ch,101);m_key.GetWindowText(key,strlen(key);CStringkey1;key1.Format(%s,key);if(key1.IsEmpty()MessageBox(你還沒有輸入密鑰!,NULL,MB_OK);return;CStringsrcFilePath(,200);m_srcFile.GetWindowText(srcFilePath);if(srcFilePath.IsEmpty()MessageBox(你還沒有選擇源文件”,NULL,MB_OK);r
12、eturn;CFilesrcFile;if(srcFile.Open(LPCTSTR(srcFilePath),CFile:modeRead)=0)MessageBox(源文件打開失敗!,NULL,MB_OK);return;CArchivesrcAr(&srcFile,CArchive:load);intfileLen=srcFile.GetLength();CStringdetFilePath(,200);m_detFile.GetWindowText(detFilePath);if(detFilePath.IsEmpty()MessageBox(你還沒有選擇目標文件”,NULL,MB_O
13、K);return;CFiledetFile;if(detFile.Open(LPCTSTR(detFilePath),CFile:modeCreate|CFile:modeWrite)=0)MessageBox(目標文件打開失敗!,NULL,MB_OK);return;CStringlen;len.Format(%d,fileLen);if(fileLen100)intk=0,i=0;k=fileLen/100;for(i=0;ik;i+)srcFile.Read(void*)ch,100);rc4.encryption(ch,key,strlen(key),100);detFile.Wri
14、te(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();文件解密:charkey256;:memset(void*)key,256);charch101;:memset(void*)ch,101);m_key.GetWindowText(key,strlen(key);CSt
15、ringkey1;key1.Format(%s,key);if(key1.IsEmpty()MessageBox(你還沒有輸入密鑰!,NULL,MB_OK);return;CStringsrcFilePath(,200);m_srcFile1.GetWindowText(srcFilePath);if(srcFilePath.IsEmpty()MessageBox(你還沒有選擇源文件”,NULL,MB_OK);return;CFilesrcFile;if(srcFile.Open(LPCTSTR(srcFilePath),CFile:modeRead)=0)MessageBox(源文件打開失敗
16、!,NULL,MB_OK);return;CArchivesrcAr(&srcFile,CArchive:load);intfileLen=srcFile.GetLength();CStringdetFilePath(,200);m_detFile1.GetWindowText(detFilePath);if(detFilePath.IsEmpty()MessageBox(你還沒有選擇目標文件”,NULL,MB_OK);return;CFiledetFile;if(detFile.Open(LPCTSTR(detFilePath),CFile:modeCreate|CFile:modeWrit
17、e)=0)MessageBox(目標文件打開失敗!,NULL,MB_OK);return;CStringlen;len.Format(%d,fileLen);if(fileLen100)intk=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(
18、key),k);detFile.Write(void*)ch,k);MessageBox(恭喜您,解密成功!,NULL,MB_OK);srcFile.Close();detFile.Close();界面設計:m_tab.InsertItem(0,字符串加密);m_tab.InsertItem(1,文件加密);cPage0.Create(IDD_PAGE0_DIALOG,GetDlgItem(IDC_TAB1);cPage1.Create(IDD_PAGE1_DIALOG,GetDlgItem(IDC_TAB1);CRectrect;m_tab.GetClientRect(&rect);rect
19、.top+=20;rect.bottom-=4;rect.left+=4;rect.right-=4;cPage0.MoveWindow(&rect);cPage1.MoveWindow(&rect);cPage0.ShowWindow(TRUE);m_tab.SetCurSel(0);intCurSel;CurSel=m_tab.GetCurSel();switch(CurSel)case0:cPage0.ShowWindow(TRUE);cPage1.ShowWindow(FALSE);break;case1:cPage0.ShowWindow(FALSE);cPage1.ShowWind
20、ow(TRUE);break;case2:cPage0.ShowWindow(FALSE);cPage1.ShowWindow(FALSE);break;default:;*pResult=0;總結:提出問題:RC4加密后的的長度是多少(例如MD5的加密后的長度是固定的)?用RC4加密后的字符串長度和原來的一樣嗎?用RC4加密后的字符串中間會不會出現(xiàn)0?用strlen得到的長度一定對嗎?解決問題:在一些場合,常需要用到一些簡單的加密算法,這里的RC4就可以說是最簡單的一種。只要設置一個足夠強的密碼,就可以適用于一些非常簡單的場合了。我是用來加密HTTP傳送的數(shù)據的。RC4函數(shù)(加密/解密)其實
21、,RC4只有加密,將密文再加密一次,就是解密了。GetKey函數(shù)隨機字符串產生器,呵呵,為了方便,大多數(shù)加密算法都有一個隨機密碼產生器,我也就附帶一個了。ByteToHex函數(shù)把字節(jié)碼轉為十六進制碼,一個字節(jié)兩個十六進制。研究發(fā)現(xiàn),十六進制字符串非常適合在HTTP中傳輸,Base64中的某些字符會造成轉義,挺麻煩的。HexToByte函數(shù)把十六進制字符串,轉為字節(jié)碼。服務器也按照十六進制字符串的形式把數(shù)據傳回來,這里就可以解碼啦。同時,使用十六進制字符串傳輸,避開了傳輸過程中多國語言的問題。Encrypt函數(shù)把字符串經RC4加密后,再把密文轉為十六進制字符串返回,可直接用于傳輸。Decrypt函數(shù)直接密碼十六進制字符串密文,再解密,返回字符串明文。心得體會:課程設計不僅是對已學知識的檢驗,更是對學生動手能力以及綜合能力的鍛煉。在我們小組組長的帶領下,以及通過全小組同學的共同努力,我們完成了課程設計的任務。在此期間,我們溫故了課堂上學過的知識,還有查找各種資料,對RC加密算法有了進一步的了解和掌握。平常學習的知識點,感覺已掌握,但是通過這次課程設計對自己學過的知識的檢閱,發(fā)現(xiàn)很多東西并不是想象的那么簡單,做起來的時候還是會因為粗心大意導致課程設計中出現(xiàn)很多小的錯誤。課程設計培養(yǎng)了自己的動手能力,對以前學習的知識起到了好的鞏固作用,并且對以后課程學習打下
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年上半年宜興市丁蜀鎮(zhèn)人民政府直屬國企業(yè)公開招聘聘用人員易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省馬鞍山市鄭蒲港新區(qū)姥橋鎮(zhèn)政府招聘8人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽池州貴池區(qū)生態(tài)環(huán)境分局招聘編外人員易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽宣城事業(yè)單位聯(lián)考易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽合肥肥西縣嚴店鄉(xiāng)招聘3人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安康西鄉(xiāng)縣事業(yè)單位招考工作人員工作(19名)易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年寧波市奉化市市文廣新局招考編外人員易考易錯模擬試題(共500題)試卷后附參考答案
- 2025四川綿陽市九洲集團軟件與數(shù)據智能軍團招聘項目經理崗位1人筆試參考題庫附帶答案詳解
- 2025年上半年寧波市住房公積金管理中心象山分中心招考易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年寧波北侖區(qū)港航管理處招考易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年雙方協(xié)商一致自愿離婚協(xié)議書范本
- 眼科與視功能檢查屈光參差課件
- GB/T 6433-2025飼料中粗脂肪的測定
- 2025年湖南司法警官職業(yè)學院單招職業(yè)傾向性測試題庫學生專用
- 四川德陽歷年中考語文文言文閱讀試題12篇(含答案與翻譯)(截至2024年)
- 合唱之美知到智慧樹章節(jié)測試課后答案2024年秋山東航空學院
- 中國卒中學會急性缺血性卒中再灌注治療指南+2024解讀
- 人工智能應用概論(第2版) 教案全套 莫少林
- 食品安全演練預案及流程
- 2025屆威海市高三語文上學期期末考試卷附答案解析
評論
0/150
提交評論