蔡增玉 劉消南 馬琳琳 甘勇 尚志會(huì)
摘要:針對(duì)密碼學(xué)課程復(fù)雜、抽象、學(xué)習(xí)難度很大的問題,設(shè)計(jì)和實(shí)現(xiàn)了基于C#的密碼學(xué)實(shí)驗(yàn)演示系統(tǒng)。系統(tǒng)實(shí)現(xiàn)了密碼學(xué)知識(shí)的介紹,并實(shí)現(xiàn)了用DES算法、RSA算法、移位代換算法、置換密碼算法、MD5算法等算法進(jìn)行加密和解密的演示。測試及應(yīng)用結(jié)果表明,該系統(tǒng)具有常用加密算法的加密解密演示功能,對(duì)于密碼學(xué)課程學(xué)習(xí)和相關(guān)內(nèi)容的研究具有一定的幫助。
關(guān)鍵詞:實(shí)驗(yàn)演示;密碼學(xué);加密解密;系統(tǒng)實(shí)現(xiàn)
中圖分類號(hào):TP309
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1006-8228(2017)01-57-03
0.引言
人們網(wǎng)絡(luò)安全意識(shí)日益增長,如何保證用戶個(gè)人信息安全成為了一個(gè)十分熱門的話題。數(shù)據(jù)加密是一個(gè)直接有效的保護(hù)信息安全的方法,而多數(shù)人對(duì)于數(shù)據(jù)加密還沒有特別深入的了解。在大學(xué)里,密碼學(xué)課程對(duì)很多學(xué)生而言是一門復(fù)雜抽象、學(xué)習(xí)枯燥、難度很大的課程。實(shí)驗(yàn)演示系統(tǒng)由于其直觀性、交互性、動(dòng)態(tài)性等優(yōu)勢,能夠提供學(xué)生的學(xué)習(xí)興趣和效果,因此開發(fā)對(duì)應(yīng)課程的實(shí)驗(yàn)演示系統(tǒng)有重要的意義。為了讓學(xué)生能夠更好的學(xué)習(xí)密碼學(xué)相關(guān)內(nèi)容,本文給出了一款基于C#的密碼學(xué)實(shí)驗(yàn)演示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),并給出了測試結(jié)果。測試結(jié)果表明,該系統(tǒng)能夠很好的對(duì)常見密碼學(xué)算法的加密/解密過程進(jìn)行演示,并實(shí)現(xiàn)了對(duì)信息及文件的加密/解密功能,完全符合設(shè)計(jì)之初的要求。
1.密碼學(xué)課程概述
密碼學(xué)是信息安全專業(yè)最重要的基礎(chǔ)課程之一,在很多高校都設(shè)有單獨(dú)的密碼學(xué)專業(yè)。密碼學(xué)研究范圍包括編制密碼和破譯密碼兩個(gè)部分。其中用來編制密碼,保證通信安全的是編碼學(xué);用來破譯密碼,截獲相關(guān)通信內(nèi)容的被稱作破譯學(xué),二者的總稱是密碼學(xué)。大學(xué)密碼學(xué)課程主要講授古典密碼學(xué)、分組密碼學(xué)、公鑰密碼學(xué)、密鑰分配與管理、信息認(rèn)證和雜湊算法、數(shù)字簽名,以及網(wǎng)絡(luò)加密與認(rèn)證等內(nèi)容。通過該課程,使學(xué)生學(xué)習(xí)到各種加/解密、散列函數(shù)、單向函數(shù)、簽名模式等知識(shí)。本文系統(tǒng)中主要是實(shí)現(xiàn)密碼學(xué)課程中所涉及到的加密解密算法的演示,包括對(duì)稱加密算法DES算法、非對(duì)稱加密算法RSA算法、古典的移位置換算法演示等,在一定程度上能夠方便學(xué)生對(duì)枯燥的加密算法的學(xué)習(xí)。
2.系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
2.1功能設(shè)計(jì)
首先為了體現(xiàn)整個(gè)演示系統(tǒng)的完整性,在系統(tǒng)的開始利用窗體程序添加了登錄界面和歡迎界面,并且在最后添加了退出界面。其次在核心的加密算法功能的設(shè)計(jì)和實(shí)現(xiàn)上面采用了窗體復(fù)用技術(shù),即在一個(gè)窗體上實(shí)現(xiàn)對(duì)所有算法的演示鏈接,這樣的設(shè)計(jì)能夠讓用戶方便直觀的體驗(yàn)系統(tǒng)的同時(shí)能夠?qū)Σ煌募用芩惴ㄓ幸粋€(gè)對(duì)比,加深對(duì)密碼學(xué)加密算法的了解和認(rèn)識(shí)。整個(gè)系統(tǒng)包括登錄界面、對(duì)密碼學(xué)知識(shí)的介紹、對(duì)稱加密算法DES算法的加密和解密、非對(duì)稱加密算法RSA算法加密和解密、以哈希算法為基礎(chǔ)的MD5算法、移位代換算法和置換密碼算法等的演示。其主要功能如圖1所示。
整個(gè)系統(tǒng)的模塊部分除了基礎(chǔ)的登錄模塊,歡迎模塊和退出模塊之外,還包含了一個(gè)對(duì)加密知識(shí)的拓展模塊和五個(gè)不同加密算法的演示模塊。
(1)加密知識(shí)拓展模塊:設(shè)計(jì)該模塊的主要目的是讓用戶在使用演示系統(tǒng)相關(guān)的功能之前,對(duì)一些與加密解密相關(guān)的基礎(chǔ)知識(shí)有一定的了解。
(2)DES算法演示:DES算法是一種典型的對(duì)稱加密算法?;贑#的密碼學(xué)實(shí)驗(yàn)演示系統(tǒng)僅選擇對(duì)典型的對(duì)稱加密算法DES算法進(jìn)行演示,演示的內(nèi)容包括對(duì)文字信息的加密/解密,以及對(duì)本地的文件通過相同的密鑰進(jìn)行加密和解密。
(3)RSA算法演示:RSA算法屬于非對(duì)稱加密算法的一種。基于c#的密碼學(xué)實(shí)驗(yàn)演示系統(tǒng)選擇進(jìn)行演示的非對(duì)稱加密算法是目前在密碼學(xué)中影響力比較大的RSA算法。介紹RSA算法實(shí)現(xiàn)的理論基礎(chǔ)及其優(yōu)缺點(diǎn),并且對(duì)加密解密過程進(jìn)行了具體的演示。
(4)MD5算法演示:MD5算法是一種利用哈希函數(shù)實(shí)現(xiàn)的加密算法。該算法不同于上面所介紹的DES算法和RSA算法,MD5算法只能是信息加密進(jìn)行加密,因此可以配合不對(duì)成加密用作數(shù)學(xué)簽名,來校檢信息在傳遞的過程中是否被修改。系統(tǒng)演示一個(gè)密鑰對(duì)一份加密內(nèi)容會(huì)產(chǎn)生惟一的一個(gè)哈希值,并且輸出加密后的密文。
(5)移位代換算法演示:本系統(tǒng)演示的移位代換算法也稱為凱撒密碼,這是一種最為古老的加密體制。凱撒密碼所采用的基本思想是通過把需要加密的內(nèi)容中的字母向前或向后移動(dòng)一定的位數(shù),將其變換成其他的字幕來達(dá)到加密的目的,由此可見,這種加密算法只能對(duì)字母進(jìn)行加密。在本系統(tǒng)中只設(shè)計(jì)了向后移動(dòng)操作。
(6)置換密碼演示:置換密碼算法同上述的移位代換算法同屬于古典密碼學(xué)內(nèi)容,其加密原理是不改變明文字符內(nèi)容,只是把明文字符的一段短語作為密鑰短語,根據(jù)密鑰短語的位數(shù)和短語中各字母的先后順序排序,同時(shí)構(gòu)建以密鑰短語長度為列數(shù)的二維數(shù)組,對(duì)應(yīng)著密鑰短語的下方將明文一一存入數(shù)組,按照密鑰短語中各字母對(duì)應(yīng)列的順序縱向讀出數(shù)組即為加密后的密文。本系統(tǒng)對(duì)這種算法提供了基本的簡介,同時(shí)提供了能夠?qū)崿F(xiàn)該算法的例子。
2.2關(guān)鍵技術(shù)
本演示系統(tǒng)采用的是C#的WinForm窗體做的主體,整個(gè)系統(tǒng)涉及的關(guān)鍵技術(shù)主要有Form窗體的傳值、WinForm窗體復(fù)用技術(shù)、文件加密技術(shù)以及對(duì)c#相關(guān)的加密解密方法。
(1)Form窗體的傳值。c#不同的窗體間傳遞數(shù)據(jù),通??梢酝ㄟ^四種方式:通過公共靜態(tài)變量、使用共有屬性、使用委托與事件和通過構(gòu)造函數(shù)把主窗體傳遞到從窗體中。本系統(tǒng)使用的是最后的那種使用委托與事件,并通過構(gòu)造函數(shù)把主窗體傳遞到從窗體中。先在主窗體中設(shè)置一個(gè)button按鈕,通過點(diǎn)擊按鈕進(jìn)入到設(shè)置的Click事件,生成一個(gè)新的Form類,然后使用“show()”方法顯示新的窗體即可。
(2)WinForm窗體復(fù)用技術(shù)。為了整個(gè)系統(tǒng)的集成度更高,在系統(tǒng)中采用了WinForm窗體復(fù)用技術(shù),即在一個(gè)大的窗體里多個(gè)小的窗體同時(shí)存在,互不干擾。本系統(tǒng)是在主窗體中設(shè)置一個(gè)TabContol控件,并且在這個(gè)控件中設(shè)置了六個(gè)TabPage實(shí)現(xiàn)不同窗體問的共存,方便用戶對(duì)比選擇演示不同的加密算法。
(3)文件的加密解密技術(shù)。不同于一般的加密算法只能夠?qū)σ欢涡畔⑦M(jìn)行加密,本系統(tǒng)演示的DES算法可以對(duì)本地文件進(jìn)行加密和解密。要做到這一步首先要提取加密文件的路徑,然后讀取本地的加密文件,通過8位的密鑰對(duì)本地文件加密,最后再保存到本地。
3.系統(tǒng)測試及分析
3.1測試結(jié)果
對(duì)基于c#的密碼學(xué)實(shí)驗(yàn)演示系統(tǒng)進(jìn)行的功能測試主要是測試不同加密加密算法的加密解密效果,測試結(jié)果如表1所示。測試表明,系統(tǒng)所涉及的功能都能夠?qū)崿F(xiàn),達(dá)到了最初功能設(shè)計(jì)要求,能滿足用戶的需求,能夠讓學(xué)生更方便深入的接觸到加密解密過程,簡化學(xué)習(xí)密碼學(xué)的難度。
3.2討論
作為一個(gè)完整的演示系統(tǒng),該系統(tǒng)具有完整的結(jié)構(gòu),包括登錄和退出界面。系統(tǒng)的定位是面向普通的用戶,系統(tǒng)界面做的足夠清晰明了,使得沒有任何基礎(chǔ)的用戶也能夠方便的進(jìn)行操作。系統(tǒng)核心模塊的特點(diǎn)是:對(duì)五種不同的加密算法進(jìn)行了有側(cè)重的介紹和演示。比如根據(jù)對(duì)稱加密算法DES算法能夠進(jìn)行文件加密的特點(diǎn)添加了文件加密功能,對(duì)目前使用比較廣泛的RSA算法從介紹基本的實(shí)現(xiàn)原理到算法的優(yōu)缺點(diǎn)進(jìn)行了描述,然后對(duì)其加密解密過程進(jìn)行了演示。該系統(tǒng)可以作為一個(gè)教學(xué)的演示系統(tǒng),區(qū)別于傳統(tǒng)密碼學(xué)課程的單調(diào)和枯燥,能夠讓學(xué)生通過演示系統(tǒng)生動(dòng)具體地學(xué)習(xí)到密碼學(xué)的相關(guān)知識(shí),了解到不同加密算法的特點(diǎn)及其實(shí)現(xiàn)過程。
4.結(jié)論
本文針對(duì)密碼學(xué)課程復(fù)雜抽象、學(xué)習(xí)難度大的問題,研究并實(shí)現(xiàn)了基于c#的密碼學(xué)演示系統(tǒng),包括系統(tǒng)的需求分析,功能的設(shè)計(jì)與實(shí)現(xiàn),開發(fā)使用的相關(guān)工具和開發(fā)方案,以及在系統(tǒng)開發(fā)過程中使用的關(guān)鍵性的技術(shù),最后對(duì)系統(tǒng)的界面和功能進(jìn)行了測試。測試結(jié)果表明該系統(tǒng)界面友好,功能性完整,實(shí)現(xiàn)了密碼學(xué)課程中典型算法的演示。本文的研究能夠較為直觀地實(shí)現(xiàn)對(duì)密碼學(xué)課程有關(guān)算法的講解,具有很好的應(yīng)用價(jià)值。