仿射密码实验报告

仿射密码实验报告

ID:24483806

大小:55.50 KB

页数:4页

时间:2018-11-15

仿射密码实验报告_第1页
仿射密码实验报告_第2页
仿射密码实验报告_第3页
仿射密码实验报告_第4页
资源描述:

《仿射密码实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验报告姓名:1111学号:22222班级:2222日期:2013211古典密码(仿射密码)一、实验环境1.硬件配置:处理器:Corei5M450@2.40GHZ,内存2GB,主硬盘320G2.使用软件:(1)操作系统:win7(2)软件工具:MicrosoftVisualC++6.0二、实验设计的相关概念或基本原理1.仿射密码的基本思想:加法密码和乘法密码结合就构成仿射密码,仿射密码的加密和解密算法是:  C=Ek(m)=(k1m+k2)modn  M=Dk(c)=k1(c-k2)modn o仿射密码具有可逆性的条件是gcd(k,

2、n)=1。当k1=1时,仿射密码变为加法密码,当k2=0时,仿射密码变为乘法密码。 o仿射密码中的密钥空间的大小为nφ(n),当n为26字母,φ(n)=12,因此仿射密码的密钥空间为12×26=312。三、实验内容根据实验原理的介绍,创建一个明文信息,再确定k1,k2,编写实现程序,实现加密和解密操作。实验流程图:四、实验总结分析关键代码:1.辗转相除法求y,z的最大公因数:intgcd(inty,intz){intk=0;do{k=y%z;y=z;z=k;}while(k!=0);returny;}2.求a相对于b的逆intNi(

3、inta,intb){inti=0;while(a*(++i)%b!=1);returni;}1.加密算法if(a[i]>96&&a[i]<123)b[i]=(k1*(a[i]-97)+k2)%26+65;elseif(a[i]>64&&a[i]<91)b[i]=(k1*(a[i]-65)+k2)%26+65;2.解密算法if(b[i]>64&&b[i]<91)tmp=Ni(k1,26)*((b[i]-65)-k2);if(tmp<0)a[i]=tmp%26+26+97;elsea[i]=tmp%26+97;结果显示:5.小结仿射密

4、码的加密较一般的古典密码更难以破解一些,因为它的密钥空间相对较大。在研究加密思想的过程中,我编程遇到的主要难题是如何求逆元的过程。我在不断查询各种资料,复习了线性代数的相关知识以后,决定将几种求法都上机调试了一遍,并参考了前人编写的各种代码实现方法,最终选定了其中一种我认为简单易行的方法。由于我设置了要求输入明文或者密文时以“#”号结尾,故当我尝试着故意忘记输入结尾符号时,发现程序出现不可预知的错误,会跳出乱码。由此我体会到,一个好的开发软件必须从用户的角度,考虑各种用户可能输入的各种情况,进行报错或者修正,这样才具有可靠性。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。