现代密码学加密系统设计课程设计.doc

上传人:laozhun 文档编号:2402013 上传时间:2023-02-17 格式:DOC 页数:22 大小:1.40MB
返回 下载 相关 举报
现代密码学加密系统设计课程设计.doc_第1页
第1页 / 共22页
现代密码学加密系统设计课程设计.doc_第2页
第2页 / 共22页
现代密码学加密系统设计课程设计.doc_第3页
第3页 / 共22页
现代密码学加密系统设计课程设计.doc_第4页
第4页 / 共22页
现代密码学加密系统设计课程设计.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《现代密码学加密系统设计课程设计.doc》由会员分享,可在线阅读,更多相关《现代密码学加密系统设计课程设计.doc(22页珍藏版)》请在三一办公上搜索。

1、现代密码学课程作业题 目现在密码学文件加密姓 名李丰学 号1009030212指 导 老 师戴祖旭指导教师职称教授年级专业班级10信息与计算科学(2)班所 在 学 院理学院2013年 6 月 25日目录摘要3前言41基础介绍51.1背景介绍51.2需求分析51.3意义51.4文献综述52实现步骤72.1基本实现技术72.2操作步骤73应用基本功能测试193.1单表加密测试。193.2单表解密测试193.3多表加密测试203.4多表解密测试213.5文件生成模块测试214总结22摘要本实验设计是在matla软件的GUI程序平台下设计的一个关于文件加密解密的小的应用,文章根据实验项目的完成过程比较

2、详细的介绍了项目的设计思想,设计方法和完成步骤,并给出了遇到的问题的解决方法,最后给出了应用的测试情况。关键词:GUI程序设计,单表加密(解密),多表加密(解密)前言本文较为详细的介绍了GUI多表单表加密应用的开发过程,全文分为三章。第一章主要介绍GUI多表单表加密应用的相关知识,以及它所要实现的基本功能。并做了简要的需求分析,确定了该程序应实现了一些基本功能。另外还简要的说明了查阅的相关资料。第二章主要介绍了开发的具体过程,以程序的具体开发步骤为主线介绍了相关的操作和具体函数的书写。第三章主要是对程序的设计进行总结。1基础介绍1.1背景介绍在现代密码学的学习过程中我们接触了许多实际的问题,主

3、要学习了在密码学的发展简史,古典密码学,分组密码,公钥密码,序列密码,数字签名以及密码协议。本设计是针对学习过的现代密码学中的古典密码学的理论来实现该课程中的一些相关的加密应用。在本文中我们对古典密码学中的两个基本的加密方法单表加密解密和多表加密解密进行GUI平台下的应用编程,实现相关的功能,以达到基本应用的目的。1.2需求分析在GUI单表多表加解密的应用中,给出如下的具体应用要求:实现对简单字符的单表多表加密解密;实现对文件的单表多表加密解密;能够在应用中自主创建加密或者是解密文件;对文件的加密和解密过程实施监测,让使用者能够了解加密和解密的进程;提供基本的应用使用帮助手册,给初次使用应用者

4、提供参考。1.3功能模块图加密系统图1.系统功能模块图1.4意义简单应用程序的设计与开发,是信息与计算科学专业学生必须掌握的一项技术。了解基本应用的各个模块之间的关系和功能,通过编程实现具体的应用是本专业学生的基本素质。通过具体的小的项目的实现,了解各功能模块的设计与实现方法,以及各功能模块之间的相互联接方法,对于今后从事软件设计与开发,有重要的指导作用。1.5文献综述文献【1】现代密码学 陈鲁生 沈世镒 北京:科学出版社文献【2】matlab与数学实验 江世宏 武汉工程大学文献【3】 网络文献此处不予列出2实现步骤2.1基本实现技术在matlab的gui编程中有两种方式来进行程序设计:直接用

5、M文件来编写;通过gui向导来进行编写。方式的好处在于可以以最大的灵活度来实现应用的设计和编写,但是缺点就在于必须对于各种控件的属性有比较好的了解。方式的优点在于编写者能够将更多的精力集中于程序控件的响应函数的编写,而不是将更多的精力放在实现的界面的美化和排版之上,缺点在于响应函数的控制范围没有前一种方式来的灵活。在本应用中主要是用gui的向导编程来实现应用的绝大部分功能,在应用的帮助手册的编辑界面实现方式上则主要是采用方式来实现。2.2操作步骤2.2.1 首先打开gui编程向导的界面,建立空白的gui界面对话框,gui向导界面如下:图2.空白gui界面建立图2.2.2 建立空白的gui界面对

6、话框之后,在该空白界面上添加一系列的程序控件,程序控件的添加主要分为5个大的模块:1加密模块控件;2解密模块控件;3自主生成文件模块;4加密形式模块;5明文密文显示框。各项控件添加完毕之后的效果截图如下:图3.系统界面控件添加效果图2.2.3对空白的对话框界面进行基本菜单的添加。在gui的向导编程中如果选择空白的对话框来建立应用程序的基本框架时,在对话框中是没有给出基本菜单栏的,这里对本应用中添加的菜单栏进行简要的说明。在控件添加界面的工具栏中有标注为Menu Edito的工具(截图如下红圈内)图4.界面编辑工具栏(红色标记为gui菜单编辑按钮)点击此按钮出现对基本菜单栏的编辑对话框(截图如下

7、):图5.菜单编辑对话框上图左侧的红圈表示一级菜单,蓝圈表示二级菜单,右侧的五角星标注为为各级菜单的命名区,红色圈表示其快捷键设置,蓝圈内的View键是用于设置菜单的响应函数的按钮,红色斜线部分标注的为菜单栏的其他属性设置界面的开启按钮。2.2.4 代码编写,代码的编写主要分为单表加密代码,多表加密代码,单表解密代码和多表解密代码,以上是解密加密的代码概述。另外还包括加解密文件生成代码,以及一些其他的辅助按键的响应代码。这里就单表加密代码和解密代码做简单的说明:单表的主要做法师对英文的二十六个字母和一些常用的标点符号进行编码,然后根据编码通过模运算来对明文实现移位,这里假设m为明文的编码,n为

8、密文的编码,密钥的编码为k,加密的模运算公式就为,其中S表示所有明文空间的长度,这样就顺利的实现加密的过程,其基本代码如下:k=get(handles.radiobutton2,value)if(k=1) filename,pathname=uigetfile( . *.*,All Files(*.*);,. ); if isequal(filename,pathname,0,0) return else pic = fullfile(pathname,filename); fid=fopen(pic); A,COUNT=fscanf(fid,%c,inf); fclose(fid); end

9、 s=get(handles.edit2,string); if isempty(s) msgbox(The edit is empty,please enter again!,error); return; end str=D:MATLAB7workmodern cryptographyencryptionwordtable1.xls; CODE,TXT,RAW=xlsread(str); s=double(s); B=double(A); m,n=size(B); j=0; C=ones(1,n); hwait=waitbar(0,Please Wait(1); for i=1:n if(

10、B(i)=13 & B(i); for h=1:n if(s=CODE(2,h) s=CODE(1,h); end WaitBar1(h,n,hwait); end close(hwait); for h=1:j for k=1:n if(C(h)=CODE(2,k) C(h)=CODE(1,k); end end end % % hwait=waitbar(0,Please Wait(3); for h=1:j C(h)=mod(C(h)+s,29); WaitBar1(h,j,hwait); end close(hwait);% close(hwait); % hwait=waitbar(

11、0,Please Wait(4); for h=1:j for k=1:n if(C(h)=CODE(1,k) C(h)=CODE(2,k); end end WaitBar1(h,j,hwait); end close(hwait)% close(hwait); C=char(C); set(handles.edit3,string,C); str=D:MATLAB7workmodern cryptographyencryptionsinglesecretword.txt; fid=fopen(str,wt); fprintf(fid,%s,C) fclose(fid)else A=get(

12、handles.edit1,string); if isempty(A) msgbox(The edit is empty,please enter again!,error); return; end s=get(handles.edit2,string); if isempty(s) msgbox(The edit is empty,please enter again!,error); return; end str=D:MATLAB7workmodern cryptographyencryptionwordtable1.xls; CODE,TXT,RAW=xlsread(str); s

13、=double(s); B=double(A); m,n=size(B); j=0; C=ones(1,n); hwait=waitbar(0,Please Wait(1); for i=1:n if(B(i)=13 & B(i); for h=1:n if(s=CODE(2,h) s=CODE(1,h); end WaitBar1(h,n,hwait); end close(hwait); for h=1:j for k=1:n if(C(h)=CODE(2,k) C(h)=CODE(1,k); end end end % % hwait=waitbar(0,Please Wait(3);

14、for h=1:j C(h)=mod(C(h)+s,29); WaitBar1(h,j,hwait); end close(hwait)% close(hwait); % hwait=waitbar(0,Please Wait(4); for h=1:j for k=1:n if(C(h)=CODE(1,k) C(h)=CODE(2,k); end end WaitBar1(h,j,hwait); end close(hwait)% close(hwait); C=char(C); set(handles.edit3,string,C); str=D:MATLAB7workmodern cry

15、ptographyencryptionsinglesecretword.txt; fid=fopen(str,wt); fprintf(fid,%s,C) fclose(fid)end解密过程就是上述过程的逆过程,这里就不在赘述,单表解密基本代码如下:k=get(handles.radiobutton2,value);%提取加密形式指标值if(k=1) filename,pathname=uigetfile( . *.*,All Files(*.*);,. ); if isequal(filename,pathname,0,0) return else pic = fullfile(pathn

16、ame,filename); fid=fopen(pic); A,COUNT=fscanf(fid,%c,inf); fclose(fid); end%文件形式解密时打开解密文件 CODE,TXT,RAW=xlsread(D:MATLAB7workmodern cryptographyencryptionwordtable1.xls);%读取解密对照表 set(handles.edit3,string,A);%将密文显示在密文编辑框中 s=get(handles.edit6,string);%提取解密密钥 if isempty(s)%解密密钥测空 msgbox(The edit is empt

17、y,please enter again!,error); return; end s=double(s); n=length(CODE); hwait=waitbar(0,Please Wait(1); for h=1:n if(s=CODE(2,h) s=CODE(1,h); end WaitBar1(h,n,hwait); end close(hwait); B=double(A); m,n=size(B); hwait=waitbar(0,Please Wait(2); for h=1:n for k=1:29 if(B(h)=CODE(2,k) B(h)=CODE(1,k); end

18、 end WaitBar1(h,n,hwait); end close(hwait); % B=mod(B-s,29); hwait=waitbar(0,Please Wait(3) for h=1:n for k=1:29 if(B(h)=CODE(1,k) B(h)=CODE(2,k); end end WaitBar1(h,n,hwait); end close(hwait); B=char(B); fid=fopen(D:MATLAB7workmodern cryptographyencryptionsingleproclaimedword.txt,wt); fprintf(fid,%

19、s,B) fclose(fid) set(handles.edit1,string,B);else CODE,TXT,RAW=xlsread(D:MATLAB7workmodern cryptographyencryptionwordtable1.xls); A=get(handles.edit3,string); s=get(handles.edit6,string); if isempty(s) msgbox(The edit is empty,please enter again!,error); return; end s=double(s); n=length(CODE); hwai

20、t=waitbar(0,Please Wait(1); for h=1:n if(s=CODE(2,h) s=CODE(1,h); end WaitBar1(h,n,hwait); end close(hwait); B=double(A); m,n=size(B); hwait=waitbar(0,Please Wait(2); for h=1:n for k=1:29 if(B(h)=CODE(2,k) B(h)=CODE(1,k); end end WaitBar1(h,n,hwait); end close(hwait); % B=mod(B-s,29); hwait=waitbar(

21、0,Please Wait(3) for h=1:n for k=1:29 if(B(h)=CODE(1,k) B(h)=CODE(2,k); end end WaitBar1(h,n,hwait); end close(hwait); B=char(B); fid=fopen(D:MATLAB7workmodern cryptographyencryptionsingleproclaimedword.txt,wt); fprintf(fid,%s,B) fclose(fid) set(handles.edit1,string,B);end3应用基本功能测试3.1单表加密测试。加密选择方式:文

22、本文件加密方式,加密文本内容:please turn down the light and go to sleep.密匙为s。加密过程截图如下:图6.单表文本加密测试图加密后的密文为eawshwpijgcpvdlcpizwpa yzipscvpydpidphawwer,在加密完成的同时秘闻内容就已经以密文文件的形式保存在了相应的文件路径之下。3.2单表解密测试解密选择方式:复杂文件解密。解密文件文本内容eawshwpijgcpvdlcpizwpa yzipscvpydpidphawwer,解密密匙s,解密过程截图如下:图7.单表文本解密测试对话框解密密文please turn down the

23、 light and go to sleep.3.3多表加密测试加密选择方式:简单加密方式。加密密文内容:please turn down the light and go to sleep.加密密钥:ab。加密过程截图如下:图8.多表简单加密测试加密结果为:pmebsf uusn,dpwo uhf mihhu bne ho,tp tlfeq.。3.4多表解密测试解密选择方式:简单字符解密。解密密文内容:pmebsf uusn,dpwo uhf mihhu bne ho,tp tlfeq.解密密匙:ab。解密过程截图如下:图9.多表简单解密测试图解密密文为:please turn down t

24、he light and go to sleep.3.5文件生成模块测试测试内容:生成明文文件文件名:proclaimedword,格式txt,文本内容:please turn down the light and go to sleep.过程截图如下:图10.文件生成测试图4总结在整个gui应用的设计过程中,在设计之前完整的整理了设计的思想,对整个应用的模块化设计,实现了不同功能模块之间不想影响的设计思想。应用设计时考虑了使用者的应用问题,在加密方式上有简单字符解密和复杂文本加密两种,选择不同的方式整个应用的界面会呈现不同的应用选项,这样的方法在文件文本的生成上也得到了应用。应用采用这样的方法可以有效的避免使用者的误操作。在应用设计的整个过程中,基本上遵循了设计的一些相应的要素,可以说在任何的程序设计过程中,我们都会遇到相应的问题,并努力去解决,所以在程序设计的过程中除了要求对程序设计的一些整体的布局了解,对程序语言的使用技巧熟练之外,还应该有坚毅的精神,应为在程序设计的过程中,我们会遇到各种各样的问题,只有在解决问题的过程中我们才会获得进步,才能够得到真正地锻炼,也就是要在实践之中获得真知!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号