蔡增玉 劉消南 馬琳琳 甘勇 尚志會


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