网络安全课程设计 第2页
二、概要设计
2.1 系统开发环境 本系统采用开发环境是VC++,应用的图形包是MFC图形包。Microsoft Visual C++是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。
2.2 系统需求分析
1.需要设计一个简单并且易操作的图形界面,系统能够打开文件并且对文件中的明文信息进行加密。
2.设计的系统能够让用户随心所欲输入自己想要输入的信息进行加密处理。
3.要求文件里的内容和文本里的内容一样时,加密出来的密文应该是一致的。
2.2.1 总体功能分析
系统具有图形界面,并且系统能够对文件里的内容和文本内容进行加密处理;界面有漂亮的背景,而且没有冗余的代码和BUG。
2.2.2 核心功能分析
核心功能是MD5算法的过程,系统能够正确地获取文本信息和文件信息及明文,然后把需要加密的明文存放到数组里。正确调用加密算法获得密文信息,然后在界面上对应的地方输出明文信息。
三、详细设计
3.1 系统开发流程
3.1.1 MD5算法了解 信息安全的核心技术是应用密码技术。密码技术的应用远不止局限于提供机密性服务,密码技术也提供数据完整性服务。密码学上的散列函数(Hash Functions)就是能提供数据完整性保障的一个重要工具。Hash函数常用来构造数据的短“指纹”,消息的发送者使用所有的消息产生一个短“指纹”,并将该短“指纹”与消息一起传输给接收者。即使数据存储在不安全的地方,接收者重新计算数据的指纹,并验证指纹是否改变,就能够检测数据的完整性。这是因为一旦数据在中途被破坏或改变,短指纹就不再正确。 散列函数是一个函数,它以一个变长的报文作为输入,并产生一个定长的散列码,有时也称为报文摘要,作为函数的输出。散列函数最主要的作用是用于鉴别,鉴别在网络安全中起到举足轻重的地位。鉴别的目的有以下两个:第一,验证信息的发送者不是冒充的,同时发信息者也不能抵赖,此为信源识别;第二,验证信息完整性,在传递或存储过程中未被篡改,重放或延迟等。 对于任意长度的明文,MD5首先对其进行分组,使得每一组的长度为512位,然后对这些明文分组反复重复处理。
对于每个明文分组的摘要生成过程如下:
(1)将512位的明文分组划分为16个子明文分组,每个子明文分组为32位。
(2)申请4个32位的链接变量,记为A、B、C、D。
(3)子明文分组与链接变量进行第1轮运算。
(4)子明文分组与链接变量进行第2轮运算。
(5)子明文分组与链接变量进行第3轮运算。
(6)子明文分组与链接变量进行第4轮运算。
(7)链接变量与初始链接变量进行求和运算。
(8)链接变量作为下一个明文分组的输入重复进行以上操作。
(9)最后,4个链接变量里面的数据就是MD5摘要。
3.1.2 MD5算法类的设计
class CMD5Checksum { public: //对于RSA的MD5算法变量定义 static CString GetMD5(BYTE* pBuf, UINT nLength); static CString GetMD5(CFile& File); static CString GetMD5(const CString& strFilePath); protected: CMD5Checksum(); virtual ~CMD5Checksum() {}; void Transform(BYTE Block[64]); void Update(BYTE* Input, ULONG nInputLen); CString Final(); inline DWORD RotateLeft(DWORD x, int n); inline void FF( DWORD& A, DWORD B, DWORD C, DWORD D, DWORD X, DWORD S, DWORD T); inline void GG( DWORD& A, DWORD B, DWORD C, DWORD D, DWORD X, DWORD S, DWORD T); inline void HH( DWORD& A, DWORD B, DWORD C, DWORD D, DWORD X, DWORD S, DWORD T); inline void II( DWORD& A, DWORD B, DWORD C, DWORD D, DWORD X, DWORD S, DWORD T); void DWordToByte(BYTE* Output, DWORD* Input, UINT nLength); void ByteToDWord(DWORD* Output, BYTE* Input, UINT nLength); private: BYTE m_lpszBuffer[64]; //输入缓冲区 ULONG m_nCount[2]; //模2^64(LSB在前) ULONG m_lMD5[4]; //MD5校验 }; 3.1.3 对文本加密 void CDoc_md5Dlg::Onwenben() { // TODO: Add your control notification handler code here
//对文本进行加密 CString str_ReourceText; GetDlgItem(IDC_EDIT1)->GetWindowText(str_ReourceText); str_ReourceText.ReleaseBuffer(); MessageBox("加密成功"); str_ReourceText = CMD5Checksum::GetMD5((BYTE*)(const char*)str_ReourceText.GetBuffer(0),str_ReourceText.GetLength()); //set the result text SetDlgItemText(IDC_STATIC_RESUAL,str_ReourceText); } 3.1.4 对文件加密 void CDoc_md5Dlg::OnOK() { // TODO: Add extra validation here //对文件进行加密 CString file_strPath; CString file_Resualt; MessageBox("加密成功"); GetDlgItem(IDC_EDIT2)->GetWindowText(file_strPath); file_Resualt = CMD5Checksum::GetMD5(file_strPath); //set the result text SetDlgItemText(IDC_STATIC_RESUALT,file_Resualt); }
3.2 系统结构
3.3.1 系统模块结构图
3.3.2 系统流程图
3.3.2
系统流程图
3.3 界面设计
四、测试结果 4.1 测试方法 第一步:在编辑框里输入加密的明文(及11.txt里内容),单击文本加密按钮就记录下MD5算法加密后的密文。 第二步:打开桌面的文件11.txt,单击文件加密按钮就记录下MD5算法加密文件内容后的密文。
第三步:对比两个密文是否相同,如果相同这成功。
4.2 测试结果
从上图中可以看出两个密文是一致的,所以加密成功。
上一页 [1] [2] [3] 下一页
网络安全课程设计 第2页下载如图片无法显示或论文不完整,请联系qq752018766