第1页共4页广东金融学院实验报告课程名称:实验编号及实验名称实验一仿射密码的编码实践系别金融数学与统计学院姓名学号班级实验地点实验日期2017年10月11日实验时数2指导教师严建平同组其他成员成绩一、实验目的及要求用matlab实现仿射密码的加密和解密并且完成界面设计。二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)MATLAB7.1,office2010,windows10,内存4G硬盘:机械硬盘500G第2页共4页三、实验内容的详细代码、清单、步骤及流程打开matlab的GUI界面设计窗口,进行仿射密码的加密和解密的窗口设计,这部分比较简单,就不详细展开说了,在这部分功能的实现主要是对功能控件进行拖拉,matlab提供了比较简易的工具,能是我们简单地设计出软件窗口。接下来是功能的实验,先是加密功能的实现,思路过程先将要加密的字母,转化为ASCII码,然后减去97,得到对于的数字。然后对数字进行加密,用e(x)=ax+b(mod26)公式去求出密文的数字,最后将加密后的数字加97,再转化为字母,得到密文。详细代码如下:functionencode_Callback(hObject,eventdata,handles)%hObjecthandletoencode(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)plaintext=get(handles.plaintext,'String');factor1=get(handles.parameter1,'String');factor2=get(handles.parameter2,'String');%将参数的字符串转化为数值factor1=str2num(factor1);factor2=str2num(factor2);plaintextASCII=double(plaintext);temCode=plaintextASCII-97;temCode=mod(temCode*factor1+factor2,26);ciphertextStr=char(temCode+97);set(handles.ciphertext,'String',ciphertextStr)解密功能实现思路跟加密差不多,而且在代码注释中也已经表达清楚,在这里不详细吗描述了。%解密函数functiondecode_Callback(hObject,eventdata,handles)%获取密文ciphertext=get(handles.ciphertext,'String');%获取两个参数factor1=get(handles.parameter1,'String');factor2=get(handles.parameter2,'String');%将参数的字符串转化为数值factor1=str2num(factor1);factor2=str2num(factor2);%定义所有与26互素的乘法逆元pNum=[1357911151719212325];UnPNum=[1921153197231151725];%得到参数的indexfactor1_index=find(pNum==factor1);%得到参数1的逆元Unfactor1=UnPNum(factor1_index)%将密文转化为ascii码ciphertextASCII=double(ciphertext);temCode=ciphertextASCII-97;%解密temCode=mod(Unfactor1*(temCode-factor2),26);%将解密后的ascii码转化为明文plaintextStr=char(temCode+97);%将明文设置到明文区域set(handles.plaintext,'String',plaintextStr)第3页共4页四.实验结果(包括程序、图表、结论陈述、数据记录及分析等)实验结果如下:对明文“plaintext”,参数1为11,参数2为6.进行加密,得到“pxgqthyzh”图1对明文plaintext进行加密的结果然后先清空明文区,对密文“pxgqthyzh”参数1为11,参数2为6,进行解密,可以发现得到明文“plaintext”,如加密的明文一样。证明该程序运行正确。五.实验总结(包括对本实验的所有问题的回答、实验过程中发现的问题以及你的改进办法)在这次实验中,我深刻理解到了仿射密码的加密解密原理,同时对于MATLAB来设计软件界面更加熟练,也对于现代密码学这门科目有了初步的认识和了解。总算能够自己动手去实现加密解密过程,还有以前一直认为加密解密方法一般比较复杂,没想到,古典密码有些加密解密方法还是比较简单的。在对仿射密码的实践中,我了解到,其核心问题就是找到一个参数的逆元,归结其本质,就是信息安全数字基础的内容,由此可见,密码体制与数学的数论有很大关系,我在以后学习这门科目的时候会注意去重新复习之前数论内容的基础。第4页共4页六.教师评语评语评语等级优良中及格不合格1.实验态度认真,实验目的明确2.实验方案、程序设计合理3.实验过程(实验步骤详细,记录完整,数据合理)4.实验结论正确,分析透彻5.实验报告独立完成,无抄袭现象,并按时提交,格式规范,文字叙述流畅,逻辑性强综合评定: