版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p> 基于C#的文件加密器的實(shí)現(xiàn)</p><p> 所在學(xué)院 </p><p> 專業(yè)班級(jí) 信息與計(jì)算科學(xué)
2、 </p><p> 學(xué)生姓名 學(xué)號(hào) </p><p> 指導(dǎo)教師 職稱 </p><p> 完成日期 年 月 </p><p><b> 摘 要</b></p
3、><p> 計(jì)算機(jī)技術(shù)的迅猛發(fā)展, 方便了我們的日常生活, 加快了工作效率, 但是由于大量敏感信息通過公共設(shè)備或網(wǎng)絡(luò)進(jìn)行交互, 病毒和黑客猖獗, 大量個(gè)人信息難免泄漏, 信息保密已然成為了社會(huì)關(guān)注的熱點(diǎn)之一. 為防止信息泄漏, 有必要設(shè)計(jì)一款機(jī)密軟件對(duì)信息進(jìn)行加密. 本論文采用C#作為開發(fā)工具, 以DES, AES, MD5為主要加密算法開發(fā)出一款新的加密軟件, 主要內(nèi)容包括: 文件密碼設(shè)置, 加密文件, 臨時(shí)解密
4、文件, 完全解密文件等. </p><p> 關(guān)鍵詞: C#; AES; DES; 文件加密</p><p><b> Abstract</b></p><p> The rapid development of computer technology facilitates our daily life and improves our
5、 work efficiency. However, since there exist a lot of virus and hackers, when sensitive information communicates through public device or network, the leakage for personal information is inevitable. Thus information secu
6、rity has become one of the most highlighted focuses nowadays. In order to prevent information leakage, it is necessary to design confidential software to encrypt the information. Using C# as a</p><p> Keywo
7、rds: C#; AES; DES; File Encryption</p><p><b> 目錄</b></p><p><b> 摘 要1-I</b></p><p> AbstractIII</p><p><b> 1 前言1</b></p>
8、;<p> 1.1 加密軟件現(xiàn)狀1</p><p> 1.2 本文工作1</p><p> 2 加密算法概述3</p><p> 2.1 加密算法的發(fā)展歷史3</p><p> 2.2 加密算法的簡(jiǎn)介3</p><p> 3 文件保密方式概述5</p><p&g
9、t; 3.1 文件隱藏5</p><p> 3.2 文件夾偽裝5</p><p> 3.3 頭文件加密5</p><p> 3.4 文件完全加密5</p><p><b> 4 程序設(shè)計(jì)6</b></p><p> 4.1 功能設(shè)計(jì)6</p><p>
10、; 4.2 人性化設(shè)計(jì)6</p><p> 4.3 運(yùn)行環(huán)境9</p><p> 4.4 開發(fā)環(huán)境9</p><p> 5 邏輯結(jié)構(gòu)設(shè)計(jì)10</p><p> 5.1 結(jié)構(gòu)圖10</p><p> 5.2 流程圖10</p><p> 6 算法分析與實(shí)現(xiàn)13</
11、p><p> 6.1 加密算法的實(shí)現(xiàn)13</p><p> 6.2 密碼驗(yàn)證的實(shí)現(xiàn)13</p><p> 6.3 文件夾隱藏與偽裝的實(shí)現(xiàn)13</p><p> 6.4 穩(wěn)定性的增強(qiáng)13</p><p><b> 7 系統(tǒng)測(cè)試15</b></p><p>
12、7.1 測(cè)試的目的和意義15</p><p> 7.2 測(cè)試步驟15</p><p><b> 8 小結(jié)16</b></p><p><b> 參考文獻(xiàn)17</b></p><p> 致謝錯(cuò)誤!未定義書簽。</p><p><b> 附件18&
13、lt;/b></p><p><b> 前言</b></p><p> 21世紀(jì)是信息時(shí)代, 隨著計(jì)算機(jī)和網(wǎng)絡(luò)的在軍事, 政治, 金融, 工業(yè), 商業(yè)等部門的廣泛應(yīng)用, 社會(huì)對(duì)計(jì)算機(jī)和網(wǎng)絡(luò)的依賴越來越大, 大量敏感信息通過公共設(shè)備或網(wǎng)絡(luò)進(jìn)行交互, 病毒和黑客猖獗, 導(dǎo)致大量個(gè)人信息泄漏, 信息保密已然成為了社會(huì)關(guān)注的熱點(diǎn)之一. 為防止信息泄漏, 有必要設(shè)計(jì)一
14、款機(jī)密軟件對(duì)信息進(jìn)行加密. 本論文開發(fā)的系統(tǒng)采用C#作為開發(fā)工具, 以DES, AES, MD5為主要加密算法, 主要內(nèi)容包括: 文件密碼設(shè)置, 加密文件, 臨時(shí)解密文件, 完全解密文件等. 并且軟件提供了人性化的界面, 傻瓜式的操作.</p><p><b> 加密軟件現(xiàn)狀</b></p><p> 經(jīng)過這樣那樣的宣傳, 加密軟件軟件這個(gè)詞匯已經(jīng)是人所眾知, 并
15、以得到大家的認(rèn)可. 說到加密軟件, 有些企業(yè)已經(jīng)進(jìn)行第二次加密軟件開發(fā)了. 甚至有些企業(yè)還在主動(dòng)尋求一些加密企業(yè)希望能提供一種加密解決方案解決企業(yè)信息安全問題. 在這良好的前景下, 仍然免不了良莠不齊的產(chǎn)品, 以及一些急功近利之徒. 有些銷售人員在不懂技術(shù)的客戶面前毫無根據(jù)地自夸, 總以為老子天下第一, 使得一些客戶因?yàn)檫@樣或者那樣的一些原因而選擇了并不適合自己的加密軟件, 不但無法保護(hù)好自己的信息財(cái)富, 還被這些不良軟件這樣或者那樣的
16、問題搞得疲憊不堪. 與此同時(shí)有些加密軟件設(shè)計(jì)理念不切實(shí)際, 使得原本簡(jiǎn)單的操作變的復(fù)雜化, 大大降低了企業(yè)的工作效率, 員工苦不堪言. </p><p><b> 本文工作</b></p><p> 一個(gè)好的加密軟件應(yīng)該簡(jiǎn)單易用, 提供人性化的界面, 傻瓜式的操作. 不管是計(jì)算機(jī)相關(guān)人員, 或者是普通人民大眾都應(yīng)該能馬上上手. </p><p&
17、gt; 本文在對(duì)網(wǎng)上各類人群進(jìn)行調(diào)查, 并進(jìn)行統(tǒng)計(jì)歸納. 共歸納出三個(gè)方面的需求.</p><p> 普通人民大眾, 希望有一款加密軟件能夠讓有些文件只能本人能看到其他人看不到. 比如某某同學(xué)的女朋友的照片等.</p><p> 工作人員, 希望有一款加密軟件能夠?qū)疚募M(jìn)行加密, 在公司文件及使被盜的情況下也不會(huì)照成泄密的危險(xiǎn), 并希望加密軟件簡(jiǎn)單易用, 不占資源.</p&
18、gt;<p> 協(xié)議或者源代碼等重要文件使用者, 希望有一款加密軟件能夠?qū)χ匾募M(jìn)行全方面加密, 在任何情況下, 保證其信息的安全性. </p><p> 本論文開發(fā)的系統(tǒng)采用多種算法, 實(shí)現(xiàn)三種加密方式, 滿足不同用戶的不同需求. 第一種加密方式為偽裝加密方式, 偽裝加密方式的好處是不對(duì)原來文件內(nèi)容做任何處理, 所以效率極快. 非常適用于普通人民大眾. 使用的方法是改變?cè)次募傩允蛊涑蔀橄到y(tǒng)
19、保護(hù)級(jí)的隱藏文件, 并偽裝成回收站. 主要應(yīng)對(duì)一些不怎么重要但是又不想讓人家看到的內(nèi)容. 第二種加密方式是頭文件加密方式, 此處所謂的頭文件是開頭部分文件內(nèi)容的簡(jiǎn)稱. 在第一種偽裝技術(shù)的基礎(chǔ)上實(shí)現(xiàn)對(duì)文件開頭部分文件進(jìn)行加密. 此種加密方式效率非??? 幾十G大小的文件也能瞬間完成, 非常適用一些工作文件加密. 第三種加密方式是完全加密, 所謂完全加密, 就是對(duì)整個(gè)文件毫無保留的進(jìn)行加密, 其是本論文開發(fā)的加密軟件中對(duì)文件加密最徹底的一種
20、方法, 優(yōu)點(diǎn)是文件加密的完整性, 由于對(duì)整個(gè)文件進(jìn)行了完整加密所以其存在效率不高的缺點(diǎn). 此種加密算法非常適用少量重要文件加密.</p><p> 在完成以上功能的同時(shí), 本文所開發(fā)的系統(tǒng)擁有以下幾點(diǎn)特色:</p><p> 頭文件加密技術(shù), 此處所謂的頭文件是開頭部分文件內(nèi)容的簡(jiǎn)稱. 此技術(shù)實(shí)現(xiàn)對(duì)文件開頭部分文件以二進(jìn)制流的方式進(jìn)行加密. 使加密時(shí)間與文件空間大小成正比改變?yōu)榧用軙r(shí)間
21、與文件個(gè)數(shù)成正比, 大大降低了文件加密所需時(shí)間, 提高了文件加密效率.</p><p> 分段加密技術(shù), 此技術(shù)解決了加密大文件時(shí), 系統(tǒng)內(nèi)存占用高的缺點(diǎn), 降低了內(nèi)存空間使用, 使得加密算法在時(shí)間和空間上得到統(tǒng)一優(yōu)化. </p><p> 自動(dòng)識(shí)別加密類型, 解密時(shí)無需手工判斷加密類型, 只需輸入密碼即可實(shí)現(xiàn)解密.</p><p> 加密狀態(tài)保留, 解密之后
22、加密狀態(tài)得到保留, 通過程序運(yùn)行時(shí)保存臨時(shí)性的密碼和加密級(jí)別來實(shí)現(xiàn)簡(jiǎn)單的按下一個(gè)按鈕就可以達(dá)到加密恢復(fù)加密狀態(tài)的功能.</p><p><b> 加密算法概述</b></p><p><b> 加密算法的發(fā)展歷史</b></p><p> 隨著信息的日益重要, 加密算法從無到有, 從整個(gè)發(fā)展進(jìn)程來看大致可分為三個(gè)階段
23、.</p><p> 1949年以前, 這個(gè)時(shí)期的加密算法還很簡(jiǎn)單, 許多加密算法都是很不安全的. 基本上以一些字謎為主, 所以這個(gè)時(shí)期所用的密碼被稱為古典密碼. 隨著西方工業(yè)革命的到來以及戰(zhàn)爭(zhēng)的需要, 密碼學(xué)進(jìn)入了邏輯機(jī)械時(shí)代, 至此加密算法有了突破性的發(fā)展. 主要的加密算法有置換, 替代和代數(shù). 其中代數(shù)加密算法是由美國(guó)電話電報(bào)公司的Gillbert Vernam 于1917年發(fā)明的, 此加密算法奠定了序列
24、密碼的基礎(chǔ), 在以后的通訊系統(tǒng)和計(jì)算機(jī)上得到廣泛的應(yīng)用.</p><p> 1949至1975年期間, 這一期間計(jì)算機(jī)技術(shù)迅猛發(fā)展, 由于計(jì)算機(jī)計(jì)算能力大幅度提升, 使得基于計(jì)算機(jī)的加密算法實(shí)現(xiàn)成為可能. 雖然這個(gè)時(shí)期的加密算法還是基于替代和置換思想, 但是由于計(jì)算機(jī)高計(jì)算能力的運(yùn)用使得加密算法的復(fù)雜度和安全性非古典密碼時(shí)期所能比擬的. 可以說是計(jì)算機(jī)將加密技術(shù)從機(jī)械時(shí)代提升到了電子時(shí)代.</p>
25、<p> 1976年至今, 隨著計(jì)算機(jī)網(wǎng)絡(luò)的日益發(fā)展, 信息保密日趨重要. 加密算法百花齊放. 從1977美國(guó)制定DES為數(shù)據(jù)加密標(biāo)準(zhǔn)到1997年新標(biāo)準(zhǔn)AES的出現(xiàn). 密碼學(xué)日新月異.</p><p><b> 加密算法的簡(jiǎn)介</b></p><p> 每個(gè)優(yōu)秀的加密軟件身后都有一個(gè)穩(wěn)固加密算法. 不管什么加密軟件, 加密算法多是她的靈魂. 本論文開
26、發(fā)的系統(tǒng)采用的DES, AES, MD5都是經(jīng)過歷史考驗(yàn)的加密算法. </p><p> DES加密算法是一種分組加密算法, 以64為為分組對(duì)數(shù)據(jù)進(jìn)行加密. DES還是一個(gè)對(duì)稱算法, 加密解密可以用同一個(gè)算法. 它的特點(diǎn)在于: 采用了分組方式, 所以密文截獲者在沒有得到每一組的全部密文前, 不可能得到它的明碼. 另一方面, DES加密函數(shù)f是一個(gè)非常復(fù)雜的變換, 其中包括擴(kuò)展置換, 按位異或, s盒置換以及P盒
27、置換, 在沒有公布它的函數(shù)的前提下沒有人能夠得到它的函數(shù)變換. </p><p> 本論文開發(fā)的系統(tǒng)采用另外的一種加密算法AES, 又稱Rijndael加密法, 其是分組密鑰, 輸入數(shù)據(jù)和密鑰長(zhǎng)度都是128位. 用Nr表示一個(gè)數(shù)據(jù)分組所需加密的論數(shù), 每一輪都需要輸入分組數(shù)據(jù)長(zhǎng)度與擴(kuò)展密鑰的長(zhǎng)度相同. 由于外部輸入的加密密鑰K長(zhǎng)度往往有限, 為了獲得更長(zhǎng)的比特串一般在算法中都要使用一個(gè)密鑰擴(kuò)展程序?qū)ν獠棵荑€K進(jìn)
28、行擴(kuò)展. 其特點(diǎn)是對(duì)內(nèi)存要求極低, 即使在硬件條件限制比較大的情況下也能獲得很好的性能, 從而使得AES加密算法在對(duì)數(shù)據(jù)提供保護(hù)的同時(shí)不會(huì)對(duì)性能產(chǎn)生較大的影響, 并且其優(yōu)異的算法使其成為了最能抵抗能量和時(shí)間攻擊的算法之一. </p><p> 本論文開發(fā)的系統(tǒng)密碼驗(yàn)證模塊采用雙重加密算法, 主要采用的是MD5加密算法. MD5加密算法是一種不可逆的加密算法, 所謂不可逆就是說輸入數(shù)據(jù)得到輸出數(shù)據(jù)之后, 不能夠再
29、從輸出數(shù)據(jù)得到到輸入數(shù)據(jù). 此種算法用于驗(yàn)證密鑰的對(duì)錯(cuò)再好不過了.</p><p><b> 文件保密方式概述</b></p><p><b> 文件隱藏</b></p><p> 文件隱藏是指通過修改文件隱藏屬性達(dá)到文件隱藏的目的, 最高級(jí)別隱藏方式是系統(tǒng)文件隱藏. </p><p><
30、;b> 文件夾偽裝</b></p><p> 在系統(tǒng)中無論怎么隱藏都可以被顯隱, 另一種比隱藏更高級(jí)的保密方式是文件夾偽裝, 文件夾偽裝是指通過修改文件夾后綴名或者修改配置文件來實(shí)現(xiàn)文件夾模擬其他文件的一種方法. 例如, 把文件夾偽裝成回收站, 別人就相當(dāng)不容易發(fā)現(xiàn), 從而達(dá)到保密的目的. </p><p><b> 頭文件加密</b><
31、/p><p> 前兩種保密方式都是在不對(duì)需保密文件進(jìn)行修改的情況下進(jìn)行保密, 此種保密方式存在保密程度低, 容易被發(fā)現(xiàn)等問題. 頭文件加密通過加密文件頭部分, 使加密后的文件打開報(bào)錯(cuò)的, 從而達(dá)到文件內(nèi)容保密的效果. </p><p> 頭文件加密保密方法優(yōu)點(diǎn)是執(zhí)行效率高, 幾十G大小的文件基本上是瞬間完成. 缺點(diǎn)是只對(duì)文件進(jìn)行了部分加密, 所以無法對(duì)流文件進(jìn)行加密. </p>
32、<p><b> 文件完全加密</b></p><p> 文件完全加密是一種通過加密算法對(duì)文件進(jìn)行徹徹底底加密的一種保密方式, 其具有安全, 可靠, 高保密度等特點(diǎn). 在擁有大量?jī)?yōu)點(diǎn)的同時(shí), 它擁有一個(gè)致命的缺點(diǎn), 那就是加密效率底下, 在進(jìn)行幾十G大小的文件加密時(shí), 其往往需要幾十分鐘(電腦配置越高時(shí)間越少)時(shí)間才能完成加密過程. </p><p>
33、;<b> 程序設(shè)計(jì)</b></p><p><b> 功能設(shè)計(jì)</b></p><p> 程序主要實(shí)現(xiàn)4種文件保密方式, 其中由于文件隱藏功能保密程度太低, 所以文件隱藏不做為單獨(dú)的一種保密方式實(shí)現(xiàn). </p><p> 共實(shí)現(xiàn)保密級(jí)別3個(gè), 即低級(jí)加密方式, 中級(jí)加密方式, 高級(jí)加密方式分別通過AES, DES
34、加密算法來實(shí)現(xiàn): </p><p> 低級(jí)加密方式. 低級(jí)加密方式主要采用偽裝的方式實(shí)現(xiàn)加密的功能, 首先設(shè)置文件屬性為系統(tǒng)文件, 再隱藏文件, 接著把文件偽裝成回收站. 其優(yōu)點(diǎn)是加密效率極快. 缺點(diǎn)是保密程度低, 容易被破解. </p><p> 中級(jí)加密方式. 此種加密方式主要通過頭文件加密方式實(shí)現(xiàn)加密功能, 此處所謂的頭文件是開頭部分文件內(nèi)容的簡(jiǎn)稱. 在第一種低級(jí)加密方式的基礎(chǔ)上
35、實(shí)現(xiàn)對(duì)文件開頭部分文件進(jìn)行加密. 此種加密方式效率非??? 幾十G大小的文件也能瞬間完成, 非常適用一些工作文件加密. 其缺點(diǎn)是: 不適用與加密流文件. </p><p> 高級(jí)加密方式. 此種加密方式在低級(jí)加密的基礎(chǔ)上, 再對(duì)文件進(jìn)行文件完全加密. 在加密與解密的時(shí)候?qū)@示進(jìn)度條. 優(yōu)點(diǎn)是加密程度極高, 適用于流文件加密. 缺點(diǎn)是加密效率低. </p><p><b> 程
36、序主功能界面</b></p><p> 圖1-1 加密界面圖</p><p><b> 人性化設(shè)計(jì)</b></p><p><b> 加密方式設(shè)計(jì)</b></p><p> 軟件使用方法及其人性化, 只要將軟件放于要加密的文件夾下, 雙擊運(yùn)行, 則能加密此文件夾下的所有文件. 如
37、圖(圖 1-2 使用方式圖), 雙擊“secrecy.exe”就能運(yùn)行軟件, 出現(xiàn)如圖(圖1-1 加密界面圖)界面, 然后輸入兩次重復(fù)的密碼即可實(shí)現(xiàn)文件的加密, 加密成功之后, 當(dāng)前文件夾下只剩下“secrecy.exe”文件, 如圖(圖 1-3 加密成功后圖)所示. </p><p> 圖 1-2 使用方式圖</p><p> 圖 1-3 加密成功后圖</p><
38、p><b> 解密方式設(shè)計(jì)</b></p><p> 加密成功之后, 如圖(圖 1-3 加密成功后圖)所示. 想要解密只需雙擊運(yùn)行“secrecy.exe”可執(zhí)行程序即可自動(dòng)判斷加密類型, 只需輸入密碼就可實(shí)現(xiàn)解密, 如圖(圖 1-4解密圖)所示. 并且可以選擇“臨時(shí)解密”和“完全解密”兩種解密方式. </p><p><b> 圖 1-4 解密
39、圖</b></p><p><b> 臨時(shí)解密</b></p><p> 臨時(shí)解密, 顧名思義就是暫時(shí)性的解密. 選擇臨時(shí)解密在輸入密碼之后并點(diǎn)擊“解密” 按鈕之后將會(huì)在系統(tǒng)托盤處創(chuàng)建一個(gè)托盤圖標(biāo), 如圖(圖 1-6 系統(tǒng)托盤圖標(biāo))所示, 并會(huì)彈出一個(gè)“恢復(fù)對(duì)話框”, 如圖(圖 1-5 臨時(shí)解密圖)所示. 分別有4個(gè)人性化功能: </p>
40、<p><b> 最小化到托盤</b></p><p> 點(diǎn)擊“最小化到托盤” , “恢復(fù)”窗口將在任務(wù)欄中隱藏, 只顯示托盤圖標(biāo), 如圖(圖 1-6 系統(tǒng)托盤圖標(biāo))所示. </p><p><b> 恢復(fù)加密狀態(tài)</b></p><p> 點(diǎn)擊“恢復(fù)加密狀態(tài)”, 程序?qū)⒆詣?dòng)恢復(fù)當(dāng)前文件夾的加密(密碼為
41、解密密碼), 并會(huì)退出程序. </p><p><b> 取消文件加密</b></p><p> 點(diǎn)擊“取消加密”, 程序?qū)?duì)當(dāng)前文件夾做完全解密處理, 并退出程序. </p><p> 解密后自動(dòng)最小化到托盤</p><p> “解密后自動(dòng)最小化到托盤”為全局設(shè)置, 范圍為當(dāng)前當(dāng)前計(jì)算機(jī), 進(jìn)行選擇后將寫入注冊(cè)
42、表, 本機(jī)上任何一次臨時(shí)解密都將采取此設(shè)置. 選擇“解密后自動(dòng)最小化到托盤”將使得在本機(jī)上再次臨時(shí)解密后“恢復(fù)”窗口直接最小化到托盤. </p><p> 圖 1-5 臨時(shí)解密圖</p><p> 圖 1-6 系統(tǒng)托盤圖標(biāo)(紅色方框)</p><p><b> 完全解密</b></p><p> 程序?qū)?duì)當(dāng)前文件
43、進(jìn)行解密再退出程序, 程序?qū)⒉槐A羧魏伪C軤顟B(tài)以及保密信息. </p><p><b> 系統(tǒng)托盤</b></p><p> 系統(tǒng)托盤圖標(biāo), 如圖(圖 1-6 系統(tǒng)托盤圖標(biāo))所示, 只在臨時(shí)解密時(shí)才會(huì)出現(xiàn). 單擊托盤圖標(biāo), 如果“恢復(fù)”窗口為顯示狀態(tài), 將隱藏“恢復(fù)”窗口, 如果“恢復(fù)”為隱藏狀態(tài), 將顯示“恢復(fù)”窗口. 并且系統(tǒng)托盤有兩個(gè)人性化功能, 如圖(圖
44、1-7 系統(tǒng)托盤圖標(biāo)功能): </p><p><b> 取消加密并退出</b></p><p> 點(diǎn)擊“取消加密并退出”: 程序?qū)?duì)當(dāng)前文件夾完全解密, 并退出程序. </p><p><b> 恢復(fù)加密并退出</b></p><p> 點(diǎn)擊“恢復(fù)加密并退出”: 程序?qū)?duì)當(dāng)前文件夾進(jìn)行加密
45、后, 再退出程序. </p><p> 圖 1-7 系統(tǒng)托盤圖標(biāo)功能</p><p><b> 運(yùn)行環(huán)境</b></p><p> 程序只能運(yùn)行在windows系統(tǒng)之下, 在win7下能直接運(yùn)行, 在2003, xp, vista系統(tǒng)必須安裝.net 3.5. </p><p><b> 開發(fā)環(huán)境<
46、;/b></p><p><b> 系統(tǒng): Win 7</b></p><p> 開發(fā)軟件: Visual Studio 2008 中文專業(yè)版</p><p> 環(huán)境: .net 3.5</p><p><b> 邏輯結(jié)構(gòu)設(shè)計(jì)</b></p><p><b
47、> 結(jié)構(gòu)圖</b></p><p> 程序主要分為加密, 解密, 恢復(fù)三個(gè)部分進(jìn)行設(shè)計(jì). 加密和解密又分別分低、中、高三個(gè)級(jí)別, 如圖(圖 5-1 程序結(jié)構(gòu)圖)所示. </p><p> 圖 5-1 程序結(jié)構(gòu)圖</p><p><b> 流程圖</b></p><p><b> 主要
48、流程</b></p><p> 用戶可以使用加密功能對(duì)未加密文件夾進(jìn)行加密, 可以對(duì)已加密文件進(jìn)行解密. 可以使用臨時(shí)解密對(duì)加密狀態(tài)進(jìn)行保留, 如圖(圖 5-2 主要流程圖)所示. </p><p> 圖 5-2 主要流程圖</p><p><b> 加密流程</b></p><p> 程序運(yùn)行后,
49、首先判斷當(dāng)前文件夾是否已經(jīng)加密, 如已經(jīng)加密則轉(zhuǎn)向解密流程, 若未加密則判斷加密類型(低、中、高三個(gè)級(jí)別)再進(jìn)行加密, 如圖(圖 5-3 加密流程圖). </p><p> 圖 5-3 加密流程圖</p><p> 注: 加密流程控制代碼見附件1: 加密流程控制代碼.</p><p><b> 解密流程</b></p>&l
50、t;p> 程序運(yùn)行后, 首先進(jìn)行判斷當(dāng)前文件夾是否已經(jīng)解密, 如已經(jīng)解密則轉(zhuǎn)向加密流程, 若未解密則判斷當(dāng)前文件夾加密級(jí)別(低、中、高三個(gè)級(jí)別), 再進(jìn)行判斷是否完全解密, 如完全解密則解密后退出程序, 若選擇臨時(shí)解密則保存加密狀態(tài)后再進(jìn)行解密, 程序停留在“恢復(fù)”界面等待用戶進(jìn)行處理, 如圖(圖 5-4 解密流程圖). </p><p> 在“恢復(fù)”界面用戶選擇取消加密則退出程序, 若選擇恢復(fù)加密則傳
51、遞加密狀態(tài)信息給加密流程進(jìn)行加密. </p><p> 圖 5-4 解密流程圖</p><p> 注:解密主控制代碼: 見附件2: 解密主控制代碼.</p><p><b> 算法分析與實(shí)現(xiàn)</b></p><p><b> 加密算法的實(shí)現(xiàn)</b></p><p>&
52、lt;b> 低(偽裝)</b></p><p><b> 未采用加密算法. </b></p><p><b> 中(頭文件)</b></p><p> 以二進(jìn)制的方式讀取文件頭部分, 再運(yùn)用AES算法對(duì)文件頭部分進(jìn)行加密. </p><p> 注: AES加密主要函數(shù):
53、見附件3: AES加密主要函數(shù).</p><p> 注: AES解密主要函數(shù): 見附件4: AES解密主要函數(shù).</p><p><b> 高(完全)</b></p><p> 以二進(jìn)制方式讀取整個(gè)文件, 并用DES算法進(jìn)行加密(解密)然后重新寫入文件覆蓋原文件. </p><p> 注: DES加密函數(shù): 見附
54、件5: DES加密函數(shù). DES是對(duì)稱加密算法, 所以解密方法和加密方法一樣, 解密函數(shù)與加密函數(shù)一樣. </p><p><b> 密碼驗(yàn)證的實(shí)現(xiàn)</b></p><p> 為了快速驗(yàn)證密碼的正確與否, 本程序采用了MD5加密算法和移位算法對(duì)密碼進(jìn)行了加密. </p><p> 注:主要加密算法: 見附件6: 密碼驗(yàn)證主要加密算法<
55、;/p><p> 文件夾隱藏與偽裝的實(shí)現(xiàn)</p><p><b> 文件夾隱藏與偽裝</b></p><p> 通過添加“.{645ff040-5081-101b-9f08-00aa002f954e}”后綴名實(shí)現(xiàn)文件夾偽裝成回收站, 并通過修改文件夾屬性的方式隱藏文件夾. </p><p> 注:文件夾隱藏與偽裝函數(shù)
56、: 見附件7: 文件夾隱藏與偽裝函數(shù).</p><p> 文件夾的顯隱與解偽裝</p><p> 通過刪除“.{645ff040-5081-101b-9f08-00aa002f954e}”后綴名實(shí)現(xiàn)文件夾的解偽裝, 并通過修改文件夾屬性的方式顯示文件夾. 與文件夾隱藏與偽裝函數(shù)類似. </p><p><b> 穩(wěn)定性的增強(qiáng)</b><
57、;/p><p> 每次進(jìn)行文件保密處理前進(jìn)行文件是否正在使用的判斷, 如果文件正在使用則跳過使用文件, 繼續(xù)未使用文件的加密. 從而保證了程序的健壯性. </p><p> 注:穩(wěn)定性增強(qiáng)代碼段見附件8: 穩(wěn)定性的增強(qiáng).</p><p><b> 系統(tǒng)測(cè)試</b></p><p><b> 測(cè)試的目的和意義
58、</b></p><p> 軟件測(cè)試的目的是為了讓軟件盡可能的達(dá)到理想軟件的狀態(tài), 讓軟件盡可能的完美和符合需求.</p><p><b> 測(cè)試目標(biāo): </b></p><p> 盡可能的發(fā)現(xiàn)BUG修復(fù)BUG . </p><p> 沒發(fā)現(xiàn)BUG的測(cè)試方案不一定是不好的測(cè)試. </p>
59、<p> 好的測(cè)試方案是發(fā)現(xiàn)了預(yù)想之外的BUG . </p><p><b> 測(cè)試步驟</b></p><p><b> 加密功能測(cè)試</b></p><p> 將程序復(fù)制到測(cè)試文件夾下, 雙擊運(yùn)行加密軟件, 分別選擇低、中、高三個(gè)級(jí)別的加密方式對(duì)測(cè)試文件夾進(jìn)行加密. 然后手工破解偽裝文件夾, 并顯示
60、系統(tǒng)保護(hù)的隱藏文件查看“\henw_x”(x表示4、5、6中的一個(gè))下的“henw_massage.txt”文件是否寫入正確. 如進(jìn)行中、高級(jí)別加密則無法打開加密文件說明加密成功. </p><p><b> 解密功能的測(cè)試</b></p><p> 將測(cè)試文件夾加密之后, 雙擊運(yùn)行軟件, 選擇完全解密對(duì)測(cè)試文件夾進(jìn)行解密. 解密之后測(cè)試文件夾下文件還原成未加密之
61、前樣子, 并且文件能正常打開則說明解密成功. </p><p><b> 恢復(fù)功能的測(cè)試</b></p><p> 將測(cè)試文件夾加密之后, 雙擊運(yùn)行軟件, 選擇臨時(shí)解密對(duì)測(cè)試文件夾進(jìn)行解密. 解密之后測(cè)試文件夾下文件還原成未加密之前樣子, 并且文件能正常打開則說明解密成功. 再選擇恢復(fù)加密, 然后手工破解偽裝文件夾, 并顯示系統(tǒng)保護(hù)的隱藏文件查看“\henw_x”
62、(x表示4、5、6中的一個(gè))下的“henw_massage.txt”文件是否寫入正確. 如進(jìn)行中、高級(jí)別加密則無法打開加密文件說明加密成功. 在解密和加密都成功的情況下說明恢復(fù)功能成功. </p><p><b> 小結(jié)</b></p><p> 本系統(tǒng)設(shè)計(jì)采用C#作為開發(fā)語(yǔ)言, 實(shí)現(xiàn)了對(duì)文件的加密和解密操作, 同時(shí)以AES, DES, MD5算法為起點(diǎn), 對(duì)主要
63、幾種加密算法進(jìn)行了概述, 綜合運(yùn)用了幾種常用的加密技術(shù), 并針對(duì)MD5算法的不足運(yùn)用了混合加密的可行改進(jìn)方案. </p><p> 然而, 本程序還存在著一些不足. 我們知道, 現(xiàn)代社會(huì)是一個(gè)知識(shí)大爆炸的社會(huì), 資料信息使用頻繁, 本系統(tǒng)設(shè)計(jì)所編寫的程序, 應(yīng)用面是很窄的, 只能手工使用, 不支持某類文檔(比如 .doc)的自動(dòng)檢測(cè)加密. 鑒于此今后可在此程序上做出擴(kuò)展, 加入一個(gè)監(jiān)控類, 自動(dòng)檢測(cè)某類文檔動(dòng)態(tài)
64、的進(jìn)行加密解密, 這樣就方便使用了. 這正是今后努力的方向.</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 馮登國(guó), 裴定一. 密碼學(xué)導(dǎo)引 [M]. 北京: 科學(xué)出版社, 1999.</p><p> [2] 張煥國(guó), 王張宜. 密碼學(xué)引論 [M]. 武漢
65、;武漢大學(xué)出版社, 2009.</p><p> [3] 王育民, 劉建偉. 通信網(wǎng)的安全理論與技術(shù) [M]. 西安: 西安電子科技大學(xué)出版社, 1999.</p><p> [4] STEVE B, STEPHEN B. Cryptography [M]. New York: McGraw-Hill, 2001.</p><
66、p> [5] KATZENBEISSE S, PETITCOLAS F A P. Information Hinding Techniques for Steganography and Digital Watermarking [M]. Boston: ARTECHHOUSE, 2000.</p><p> [6] SCHNEIER B. Applied Cryptography, Prot
67、ocols, Algorithms and Source Code in C [M]. New York: John Wiley and Sons, 1996.</p><p> [7] Tom Archer. C#技術(shù)內(nèi)幕[M]. 北京: 清華大學(xué)出版社, 2002.</p><p> [8] 沉舟. Microsoft .NET編程語(yǔ)言C# [M]. 北京: 希
68、望電子出版社, 2001.</p><p> [9] 易向東, 陳蓓, 萬英編著. C#程序員開發(fā)指南 [M]. 北京: 北京希望電子出版社, 2006年.</p><p> [10] 周存杰. Visual C# .NET網(wǎng)絡(luò)核心編程 [M]. 北京: 清華大學(xué)出版社, 2002.</p><p><b> 附件</b></p&g
69、t;<p> 附件1: 加密流程控制代碼</p><p> /// <summary></p><p><b> /// 加密主控制</b></p><p> /// </summary></p><p> public static void Encrypt()</
70、p><p><b> {</b></p><p> ///henw_x文件夾的創(chuàng)建 并移入文件</p><p> if (function.Move.Into())</p><p><b> {</b></p><p> ///判斷加密程度,并分別加密</p>
71、;<p> switch (HenwDirectory.Substring(henwDirectory.Length - 1, 1))</p><p><b> {</b></p><p> case "4": break;</p><p><b> case "5":&l
72、t;/b></p><p> Encryption.Encrypt(HenwDirectory);</p><p><b> break;</b></p><p><b> case "6":</b></p><p> ProgressForm.Initialize
73、();</p><p> Encryption.EncryptFully(HenwDirectory);</p><p><b> break;</b></p><p> default: MessageBox.Show(@"secrecy.Encrypt()<判斷加密程度>出錯(cuò)!", "提示信息
74、", MessageBoxButtons.OK, MessageBoxIcon.Error); return;</p><p><b> }</b></p><p> ///密鑰核對(duì)字符串生成</p><p> StringBuilder sb = new StringBuilder();</p><p>
75、; foreach (char c in TempPassword) { sb.Append(c + 5); }</p><p> MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();</p><p> string MD5password = BitConverter.ToString(md5.ComputeH
76、ash(UTF8Encoding.Default.GetBytes(sb.ToString())), 0, 15);</p><p><b> ///密鑰文件創(chuàng)立</b></p><p> File.WriteAllText(HenwDirectory + @"\henw_massage.txt", MD5password);</p>
77、;<p><b> ///隱藏文件夾</b></p><p> Hide.Execute();</p><p><b> Exit();</b></p><p><b> }</b></p><p> else MessageBox.Show("
78、;加密已經(jīng)被取消!");</p><p><b> }</b></p><p> 附件2: 解密主控制代碼</p><p> /// <summary></p><p><b> /// 解密總控制</b></p><p> /// </
79、summary></p><p> public static void Decrypt()</p><p><b> {</b></p><p><b> ///顯隱</b></p><p> Hide.Show(HenwDirectory);</p><p>
80、; ///密鑰核對(duì)字符串生成</p><p> StringBuilder sb = new StringBuilder();</p><p> foreach (char c in TempPassword) { sb.Append(c + 5); }</p><p> MD5CryptoServiceProvider md5 = new MD5Crypt
81、oServiceProvider();</p><p> string MD5password = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(sb.ToString())), 0, 15);</p><p><b> ///判斷密碼</b></p><
82、p> if (File.ReadAllText(HenwDirectory + @"\henw_massage.txt", Encoding.Default) == MD5password)</p><p><b> {</b></p><p><b> ///刪除密碼文件</b></p><p
83、> FileInfo file = new FileInfo(HenwDirectory + @"\henw_massage.txt");</p><p> if (file.Exists)</p><p><b> {</b></p><p> file.Delete(); //刪除單個(gè)文件</p>
84、;<p><b> }</b></p><p> ///判斷加密程度,并分別解密</p><p> switch (henwDirectory.Substring(henwDirectory.Length - 1, 1))</p><p><b> {</b></p><p>
85、 case "4": break;</p><p><b> case "5":</b></p><p> Encryption.Decrypt(henwDirectory);</p><p><b> break;</b></p><p><b
86、> case "6":</b></p><p> ProgressForm.Initialize();</p><p> Encryption.DecryptFully(HenwDirectory);</p><p><b> break;</b></p><p> def
87、ault: MessageBox.Show(@"secrecy.Encrypt()<判斷解密程度>出錯(cuò)!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Error); return;</p><p><b> }</b></p><p> ///移出文件夾并刪除之&
88、lt;/p><p> Move.Out();</p><p> if (Directory.Exists(HenwDirectory))</p><p><b> ///密鑰文件創(chuàng)立</b></p><p> File.WriteAllText(HenwDirectory + @"\henw_massage
89、.txt", MD5password);</p><p> if (TampDecrypt)</p><p><b> {</b></p><p><b> ///恢復(fù)窗口</b></p><p> DecryptForm.Hide();</p><p>
90、 ProgressForm.Hide();</p><p> RecoverForm.Initialize();</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p&g
91、t;<b> Exit();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><
92、;p> Hide.Execute();</p><p> MessageBox.Show(@"密碼錯(cuò)誤哦!請(qǐng)?jiān)僮屑?xì)想想!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Error);</p><p><b> return;</b></p><p&g
93、t;<b> }</b></p><p><b> }</b></p><p> 附件3: AES加密主要函數(shù)</p><p> /// <summary></p><p><b> /// 加密</b></p><p> ///
94、 </summary></p><p> /// <param name="btEncrypt">待加密字節(jié)流</param></p><p> /// <param name="btEncryptKey">密鑰流</param></p><p> /// &l
95、t;returns>byte[]</returns></p><p> public static byte[] BtEncrypt(byte[] btEncrypt, string strEncryptKey) {</p><p> if (btEncrypt.Length <= 0) { throw (new Exception("密文不得為空&q
96、uot;)); }</p><p> if (string.IsNullOrEmpty(strEncryptKey)) { throw (new Exception("密鑰不得為空")); }</p><p><b> else {</b></p><p> if (strEncryptKey.Length >
97、16)</p><p> strEncryptKey = strEncryptKey.Substring(0, 16);</p><p><b> else</b></p><p> strEncryptKey = strEncryptKey.PadRight(16, 'H');</p><p>&
98、lt;b> }</b></p><p> byte[] m_btEncrypt;</p><p> byte[] m_btIV = Convert.FromBase64String("Rkb4jvUy/ye7Cd7k89QQgQ==");</p><p> Rijndael m_AESProvider = Rijndae
99、l.Create();</p><p><b> try {</b></p><p> MemoryStream m_stream = new MemoryStream();</p><p> CryptoStream m_csstream = new CryptoStream(m_stream, m_AESProvider.Create
100、Encryptor(Encoding.Default.GetBytes(strEncryptKey), m_btIV), CryptoStreamMode.Write);</p><p> m_csstream.Write(btEncrypt, 0, btEncrypt.Length); m_csstream.FlushFinalBlock();</p><p> m_btEncryp
101、t = m_stream.ToArray();</p><p> m_stream.Close(); m_stream.Dispose();</p><p> m_csstream.Close(); m_csstream.Dispose();</p><p><b> }</b></p><p> catch (
102、IOException ex) { throw ex; }</p><p> catch (CryptographicException ex) { throw ex; }</p><p> catch (ArgumentException ex) { throw ex; }</p><p> catch (Exception ex) { throw ex;
103、}</p><p> finally { m_AESProvider.Clear(); }</p><p> return m_btEncrypt;</p><p><b> }</b></p><p> 附件4: AES解密主要函數(shù)</p><p> /// <summary&g
104、t;</p><p><b> /// 解密</b></p><p> /// </summary></p><p> /// <param name="btDecrypt">待解密字節(jié)流</param></p><p> /// <param nam
105、e="strDecryptKey">密鑰</param></p><p> /// <returns>byte[]</returns></p><p> public static byte[] BtDecrypt(byte[] btDecrypt, string strDecryptKey) {</p>&l
106、t;p> if (btDecrypt.Length <= 0) { throw (new Exception("密文不得為空")); }</p><p> if (string.IsNullOrEmpty(strDecryptKey)) { throw (new Exception("密鑰不得為空")); }</p><p><
107、b> else {</b></p><p> if (strDecryptKey.Length > 16)</p><p> strDecryptKey = strDecryptKey.Substring(0, 16);</p><p><b> else</b></p><p> st
108、rDecryptKey = strDecryptKey.PadRight(16, 'H');</p><p><b> }</b></p><p> byte[] m_btDecrypt;</p><p> byte[] m_btIV = Convert.FromBase64String("Rkb4jvUy/ye
109、7Cd7k89QQgQ==");</p><p> Rijndael m_AESProvider = Rijndael.Create();</p><p><b> try {</b></p><p> MemoryStream m_stream = new MemoryStream();</p><p>
110、; CryptoStream m_csstream = new CryptoStream(m_stream, m_AESProvider.CreateDecryptor(Encoding.Default.GetBytes(strDecryptKey), m_btIV), CryptoStreamMode.Write);</p><p> m_csstream.Write(btDecrypt, 0, btDec
111、rypt.Length); m_csstream.FlushFinalBlock();</p><p> m_btDecrypt = m_stream.ToArray();</p><p> m_stream.Close(); m_stream.Dispose();</p><p> m_csstream.Close(); m_csstream.Dispose
112、();</p><p><b> }</b></p><p> catch (IOException ex) { throw ex; }</p><p> catch (CryptographicException ex) { throw ex; }</p><p> catch (ArgumentExcepti
113、on ex) { throw ex; }</p><p> catch (Exception ex) { throw ex; }</p><p> finally { m_AESProvider.Clear(); }</p><p> return m_btDecrypt;</p><p><b> }</b>&
114、lt;/p><p> 附件5: DES加密函數(shù)</p><p> /// <summary></p><p> /// 對(duì)文件內(nèi)容進(jìn)行DES加密</p><p> /// </summary></p><p> /// <param name="sourceFile&quo
115、t;>待加密的文件絕對(duì)路徑</param></p><p> /// <param name="destFile">加密后的文件保存的絕對(duì)路徑</param></p><p> public void Encrypt(string sourceFile, string destFile) {</p><p
116、> if (!File.Exists(sourceFile)) throw new FileNotFoundException("指定的文件路徑不存在!", sourceFile);</p><p> byte[] btKey = Encoding.Default.GetBytes(Key);</p><p> byte[] btIV = Encoding.
117、Default.GetBytes(iv);</p><p> DESCryptoServiceProvider des = new DESCryptoServiceProvider();</p><p> using (FileStream inFs = new FileStream(sourceFile, FileMode.Open, FileAccess.Read))</p&
118、gt;<p> using (FileStream fs = new FileStream(destFile, FileMode.Create, FileAccess.Write)) {</p><p><b> try {</b></p><p> long readLen = 0;</p><p> long tota
119、lLen = inFs.Length;</p><p> byte[] btIn = new byte[1048576];</p><p> using (CryptoStream cs = new CryptoStream(fs, des.CreateEncryptor(btKey, btIV), CryptoStreamMode.Write)) {</p><p
120、> while (readLen < totalLen) {</p><p> int blockLen = inFs.Read(btIn, 0, 1048576);</p><p> cs.Write(btIn, 0, blockLen);</p><p> readLen = readLen + blockLen;</p>&l
121、t;p> if (blockLen > 555555)</p><p> Manage.ProgressForm.Add();</p><p><b> }</b></p><p> cs.FlushFinalBlock();</p><p><b> }</b></p&
122、gt;<p><b> }</b></p><p><b> catch {</b></p><p><b> throw;</b></p><p><b> }</b></p><p><b> finally {<
123、;/b></p><p> fs.Close();</p><p><b> }</b></p><p><b> }</b></p><p> FileInfo file = new FileInfo(sourceFile);</p><p> if (fi
124、le.Exists) {</p><p> file.Delete(); //刪除單個(gè)文件</p><p><b> }</b></p><p><b> }</b></p><p> 附件6: 密碼驗(yàn)證主要加密算法</p><p> StringBuilder s
125、b = new StringBuilder();</p><p> foreach (char c in TempPassword) { sb.Append(c + 5); } //移位加密算法</p><p> MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();</p><p>&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于c#的文件加密器的實(shí)現(xiàn)【文獻(xiàn)綜述】
- 基于c#的文件加密器的實(shí)現(xiàn)【開題報(bào)告】
- 基于c#的文檔加密器的實(shí)現(xiàn)
- 畢業(yè)論文--基于c#職工信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 信息與計(jì)算科學(xué)畢業(yè)論文基于visual c#平臺(tái)的幾種數(shù)字圖像處理算法的實(shí)現(xiàn)
- 畢業(yè)論文--基于c#職工信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 信息與計(jì)算科學(xué)畢業(yè)論文通用數(shù)據(jù)庫(kù)的c語(yǔ)言實(shí)現(xiàn)
- 通信工程畢業(yè)論文_des加密算法的研究及c#軟件實(shí)現(xiàn)
- 基于qt的科學(xué)計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文.doc
- 2017畢業(yè)論文-基于c#的圖片瀏覽器設(shè)計(jì)
- 基于c#聊天群的編程畢業(yè)論文
- 基于c#的小區(qū)物業(yè)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 【畢業(yè)論文】
- 基于c#的即時(shí)通訊軟件設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 基于c#的人事工資管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)——畢業(yè)論文
- 基于c#的人事工資管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)——畢業(yè)論文
- 通用型語(yǔ)音加密器的研究與實(shí)現(xiàn).pdf
- 信息與計(jì)算科學(xué)畢業(yè)論文基于粒計(jì)算的分類規(guī)則提取
- 基于c#的房屋中介網(wǎng)站系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)——畢業(yè)論文
- 基于c#的網(wǎng)吧會(huì)員管理系統(tǒng)畢業(yè)論文
- 基于c#的在線電子商城畢業(yè)論文
評(píng)論
0/150
提交評(píng)論