




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络安全课程设计报告院 系:数学与计算机学院专业班级: 指导教师: 学 号: 学生姓名: 报告日期: 目 录1. 摘要2. 开发背景3. 功能需求分析3.1基本要求3.2功能设计4. 运行结果5. 心得1、摘要进行程序的加密解密是现在对文件保护的一种重要措施。传统的文件保护方法只是对文件进行封存。随着计算机和网络技术的迅速发展,越来越多的人意识到文件加密的重要性,而采用一定的程序对文件进行加密正是现在人们对文件保护的一种必要手段。文件加密技术是通过相应程序对文件进行加密,它有许多优点,例如:可以对任意文本文档进行不同种类的加密,对原文件不造成破坏,同时可以将加密后的文件保存起来用于传输。程序灵活性强,可以随时进行加密解密。用户可以根据需要使程序完成相应功能。本文采用C程序,实现了所述功能中的全部内容。报告首先介绍了程序的设计思路,其中包括相应的流程图。其次,介绍了函数的主要功能。最后,利用C语言环境编辑程序实现了全部功能,并作了详细描述。2、 开发背景随着科学的日益进步,电子技术越来越被人们所广泛使用。在此期间,自然涉及到文件的传递。在此之前有关文件的转移都是人为进行转移,因此所谓的加密是物理意义上的加密。物理上的加密就是对文件封存,以至于文件内容不会泄露。但在这个网络的时代,文件的传递有着更加快捷的方式,就是通过互联网。这是种抽象的传输方式,文件不通过接触性交换,而是以数据的形式传送。在传递过程中,文件很容易被人截获,从而被他人得到了文件内容。如果不进行有效的保护措施,一旦发生这种情况,文件内容自然就没有保密可言,将会造成严重的损失。如果将原文件加密,虽然在传输过程中仍有被截获的可能,但窃取者可能无法阅读文件中的内容,从而间接的保护了文件。因此可以说,对文件的加密是极为重要的。本题目的内容是要对一个文件进行加密与解密。通过对程序的设计,可以对C程序中的数组函数分支循环文件等内容有更深入的理解与运用。设计程序的过程中,通过已有知识的运用和独立完成与思考,能够做到对知识的整体理解。通过解决设计过程中遇到的问题,能够提高设计程序的熟练度,并对知识有巩固作用。另外,所选题目与自己的兴趣有关。编程之中不仅能提高题目涉及到的内容的兴趣,更主要在于能够对C语言更加感兴趣。3、 功能需求分析3.1、基本要求实现对数据的加密解密,加密之后的密文为乱码,解密必须使用与加密相同的秘钥。否则,无法解密出正确的明文。3.2、功能设计基本思想是在工程目录下自动生成“明文.txt”,“密文.txt”, “解密后.txt”三个文件“明文.txt”文件用于保存编辑框中输入的明文数据,“密文.txt”用于保存加密后的密文,“解密后.txt”用于保存解密后的内容。程序界面图如下: “加密发送”按钮事件为void CDesDlg:OnBUTTONEnc()。具体代码为: void CDesDlg:OnBUTTONEnc()FILE *plain,*cipher; char *plainFile=明文.txt; /明文所在文件 char *cipherFile=密文.txt; /密文所在文件/ CString cstr;/ char *p = (LPSTR)(LPCTSTR)cstr;GetDlgItemText(IDC_EDITEncKey, m_EncKey); /获得文本框中的内容,保存在m_EncKey中/ char * keyStr=12345678; /秘钥 char *keyStr=(LPSTR)(LPCTSTR)m_EncKey; if(m_EncKey.GetLength()!=8) MessageBox(请输入长度为8的密钥); return ; int count; ElemType plainBlock8,cipherBlock8,keyBlock8; ElemType bKey64; ElemType subKeys1648; if(plain = fopen(plainFile,w+b) = NULL) return ; if(cipher = fopen(cipherFile,w+b) = NULL) return ; /*设置密钥*/ memcpy(keyBlock,keyStr,8); /*将密钥转换为二进制流*/ Char8ToBit64(keyBlock,bKey); /*生成子密钥*/ DES_MakeSubKeys(bKey,subKeys); GetDlgItemText(IDC_EDITEnc, m_plain); /获得文本框中的内容,保存在m_plain中if(plain != NULL) fseek(plain, 0, SEEK_END); fputs(m_plain, plain);/这句应该可以正确执行,如果不行这样改:fputs(const char*)str, fp); /fputs(n,plain);/或fputs(rn); fclose(plain); if(plain = fopen(plainFile,a+b) = NULL) return ; while(!feof(plain) /*每次读8个字节,并返回成功读取的字节数*/ if(count = fread(plainBlock,sizeof(char),8,plain) = 8)DES_EncryptBlock(plainBlock,subKeys,cipherBlock);fwrite(cipherBlock,sizeof(char),8,cipher); if(count) /*填充*/ memset(plainBlock + count,0,7 - count); /*最后一个字符保存包括最后一个字符在内的所填充的字符数量*/ plainBlock7 = 8 - count; DES_EncryptBlock(plainBlock,subKeys,cipherBlock); fwrite(cipherBlock,sizeof(char),8,cipher); fclose(plain); fclose(cipher);加密过程为分组加密,即每次加密8个字节,不足八个字节的分组,用0x00补齐。“密文”按钮事件为void CDesDlg:OnBUTTONShowCipher(),主要是获取“密文.txt”文件中的数据,显示到编辑控件中。“解密接受”按钮事件为void CDesDlg:OnBUTTONDec() 代码为:void CDesDlg:OnBUTTONDec() FILE *plain, *cipher; char *plainFile=解密后.txt; /明文所在文件 char *cipherFile=密文.txt; /密文所在文件/ char * keyStr=12345678; /秘钥 GetDlgItemText(IDC_EDITDecKey, m_DecKey); /获得文本框中的内容,保存在m_EncKey/ char * keyStr=12345678; /秘钥 char *keyStr=(LPSTR)(LPCTSTR)m_DecKey; if(m_DecKey.GetLength()!=8) MessageBox(请输入长度为8的密钥); return ; / if(m_DecKey!=m_EncKey)/ MessageBox(解密密钥不正确);/ return ;/ int count,times = 0; long fileLen; ElemType plainBlock8,cipherBlock8,keyBlock8; ElemType bKey64; ElemType subKeys1648; if(cipher = fopen(cipherFile,rb) = NULL) return ; if(plain = fopen(plainFile,w+b) = NULL) return ; /*设置密钥*/ memcpy(keyBlock,keyStr,8); /*将密钥转换为二进制流*/ Char8ToBit64(keyBlock,bKey); /*生成子密钥*/ DES_MakeSubKeys(bKey,subKeys); /*取文件长度 */ fseek(cipher,0,SEEK_END);/*将文件指针置尾*/ fileLen = ftell(cipher); /*取文件指针当前位置*/ rewind(cipher); /*将文件指针重指向文件头*/ while(1) /*密文的字节数一定是8的整数倍*/ fread(cipherBlock,sizeof(char),8,cipher); DES_DecryptBlock(cipherBlock,subKeys,plainBlock); times += 8; if(times fileLen)fwrite(plainBlock,sizeof(char),8,plain); elsebreak; /*判断末尾是否被填充*/ if(plainBlock7 8) for(count = 8 - plainBlock7; count Se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年春季中国石油大庆石化分公司高校毕业生招聘15人(黑龙江)考前自测高频考点模拟试题含答案详解
- 2025广西民族博物馆编外人员招聘1人考前自测高频考点模拟试题及1套完整答案详解
- 2025广西来宾市投资促进局招聘后勤服务控制数人员1人模拟试卷及完整答案详解1套
- 2025湖北华中科技大学同济医学院附属协和医院耳鼻咽喉头颈外科孙宇教授团队专职研究人员招聘考前自测高频考点模拟试题(含答案详解)
- 2025广西百色干部学院公开招聘教研人员3人模拟试卷带答案详解
- 2025广东韶关市新丰县文广旅体局招聘社会购买服务人员1人考前自测高频考点模拟试题及完整答案详解
- 2025年潍坊工商职业学院人才引进计划(70人)模拟试卷附答案详解(突破训练)
- 2025汉中市南郑区投资控股集团有限公司招聘(4人)考前自测高频考点模拟试题(含答案详解)
- 2025年枣庄市胸科医院公开招聘备案制工作人员(13人)模拟试卷附答案详解(考试直接用)
- 2025广东河源市连平县政务服务和数据管理局招聘编外人员2人考前自测高频考点模拟试题及一套完整答案详解
- 2025年职业病医师资格认证考试
- Unit4《Lesson 3 I am proud of my father》教案-2025-2026学年冀教版(三起)(2024)小学英语四年级上册
- 消防队伍管酒治酒课件
- 医学继续教育管理办法
- 夜间驾驶知识课件
- 动荡变化中的春秋时期
- 陕西省西工大附中2022-2023学年七年级上学期第一次月考英语试卷(含答案)
- 2025辅警考试题库(含答案)
- QGDW10212-2019电力系统无功补偿技术导则
- 牛奶面包食品配送服务 投标方案(技术方案)
- 菜鸟驿站运营管理制度
评论
0/150
提交评论