Hill密码的加密解密
更新时间:2023-12-08 11:29:01 阅读量: 教育文库 文档下载
【实验十】Hill密码的加密、解密与破译
一、实验目的
本实验主要涉及代数,利用模运算下的矩阵乘法、求逆矩阵、线性无关、线性空间与线性变换等概念和运算,学习Hill密码体制的加密、解密和破译过程
二、实验任务
任务五
找出元素属于Z26的所有可能的Hill2密码加密矩阵。若截获了如下一段密文: UTCQCVFOYQUVMGMGULFOLEYHDUHOPEASWXTIFBAMWT
且已知它是根据表10.1按Hill2密码体制加密的,你能否将其解密?
表10. 1 明文字母的表值 A 1 N 14 B 2 O 15 C 3 P 16 D 4 Q 17 E 5 R 18 F 6 S 19 G 7 T 20 H 8 U 21 I 9 V 22 J 10 W 23 K 11 X 24 L 12 Y 25 M 13 Z 0 分析:对于第一问,找出元素属于Z26的所有可能的Hill2密码加密矩阵,我们只需要用枚举法即可。关键在于第二问的解密,根据我们编写的C++程序,共有约15万个可能的加密矩阵,也就对应着同等数量的可能明文。所以问题的重点就在于如何从这么多数量的明文中筛选出有意义的信息。
1、找出元素属于Z26的所有可能的Hill2密码加密矩阵
C++源代码(枚举加密矩阵部分):
chain_mat* head=new chain_mat; //加密矩阵用链表储存 head->next=NULL;
chain_mat* now=head;
int n=0;
for(int a=0;a<26;a++) for(int b=0;b<26;b++) for(int c=0;c<26;c++) for(int d=0;d<26;d++) { intdet=a*d-b*c;
if(det%2!=0&&det!=0) //判断是否模26可逆 {
chain_mat* newm=new chain_mat; newm->dat[0][0]=a; newm->dat[0][1]=b; newm->dat[1][0]=c; newm->dat[1][1]=d;
n++; //累加符合要求的矩阵数量 now->next=newm; now=now->next; now->next=NULL;
} }
运行结果:n=157248
由于矩阵数量过多,我们将其存储在matrixlist.txt文件中
C++源代码(输出矩阵部分):
voidoutput_mat(chain_mat* head) {
ofstreamoutfile;
outfile.open(\chain_mat* now=head->next; while(now!=NULL) {
outfile<
[1][0]<<'\\t'<
outfile.close(); }
下面给出matrixlist.txt中部分内容(完整文件将发至邮箱): 0 1 1 0
========== 0 1 1 1
========== 0 1 1 2
========== 0 1 1 3
========== 0 1 1 4
========== 0 1 1 5
========== 0 1 1 6
========== 0 1 1 7
========== 0 1 1 8
========== 0 1 1 9
========== 0 1 1 10
==========
2.解密题中密文
首先需要做的是对矩阵进行模逆运算
C++源代码(模26逆矩阵运算部分): voidinv(chain_mat* m1) {
intdet=m1->dat[0][0]*m1->dat[1][1]-m1->dat[0][1]*m1->dat[1][0]; det=reci(det); inttmp;
tmp=m1->dat[0][0]*det;m1->dat[0][0]=m1->dat[1][1]*det;m1->dat[1][1]=tmp;
m1->dat[0][1]*=-1*det;m1->dat[1][0]*=-1*det; for(inti=0;i<2;i++) for(int j=0;j<2;j++) {
m1->dat[i][j]%=26; if(m1->dat[i][j]<0)
m1->dat[i][j]+=26; } }
然后用逆矩阵乘密文向量,得到可能明文序列,存入名为me1的string数组中
C++源代码(模26逆矩阵运算部分): n=0;
while(now!=NULL)
{
inv(now);
for(inti=0;i int s1=now->dat[0][0]*co1[i]+now->dat[0][1]*co1[i+1]; int s2=now->dat[1][0]*co1[i]+now->dat[1][1]*co1[i+1]; s1%=26;s2%=26; if(s1<0)s1+=26; if(s2<0)s2+=26; if(s1==0) s1=26; if(s2==0) s2=26; me1[n]+=('A'+s1-1); me1[n]+=('A'+s2-1); } n++; inv(now); now=now->next; } 至此,我们得到了157248条可能的明文,接下来就要考虑筛选的问题。我们首先猜测明文是汉语拼音,根据拼音的字母排列特点,我们设计了字典式的筛选方法,即将拼音中出现频率较高的双字母组合先列出,然后与明文比对,如果出现了特定字母组合则将此字符串对应的“评级”提高。处理完毕后选出“评分”最高的那条明文。 C++源代码(“评分”部分): intcountword_MDR(string str[],int n) { int m=0;int index=0;int loc=0; intlen=str[0].length(); stringdic[]={\I\ \,\ \,\ \,\ \ \}; for(inti=0;i intn_aoe=0; index=0; for(int j=0;j if(str[i][j]=='A'||str[i][j]=='O'||str[i][j]=='E'||str[i][j]= ='I'||str[i][j]=='U'||str[i][j]=='V')n_aoe++; for(int j=0;j<87;j++) { intpos=0; while(str[i].find(dic[j],pos)!=string::npos) { index++; pos=str[i].find(dic[j],pos)+1; } } if(m returnloc; } 以题中密文进行测试,运行结果见下图: 程序返回了有意义的明文,“微软公司即将推出新一代奔腾”,且加密矩阵为: 52 311 为检验此筛选方法的有效性,我们又以教材中的例题进行测试: QSIUYSBACPGZSAVCOVKPEWCPADKPPABUJCQLYXQEZAACPP 运行结果如下图: 同样,程序也返回了正确的明文,且加密矩阵也与教材相符。 三、实验小结 通过对Hill密码解密问题的思考与探究,我们加深了对于矩阵的理解,同时也灵活运用了我们的编程知识,并最终得到了正确的结果,同时在一步步分析问题并解决问题的路途中我们同样收获颇丰。然而实验也留下一个遗憾:类似的筛选方法难以运用于以英文作为明文的密码上。
正在阅读:
Hill密码的加密解密12-08
2015年江苏省高等职业院校技能大赛现代物流作业方案设计与实施赛项竞赛规程 - 图文11-22
成长中的启示作文800字06-23
GPS监控简报 7月份03-09
细化档案管理工作,做好离退休干部服务-2019年文档05-01
通信原理课后总结复习题04-26
自考西方政治制度名词解释12-23
浙江省设计单位名录大全05-07
用outlook发送和接收电子邮件06-05
养老院设计任务书11-07
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 加密解密
- 密码
- Hill
- 八字预测真踪
- 2016年三类人员继续教育考试题库
- 大学物理学答案
- 2017年教师资格证考试真题模拟及解析幼教综合素质(五)
- 氨和铵盐总练习
- 在平原新区干部会议上的讲话
- 2013年-雪慕冰-工程热力学第二章经典例题 -
- 18春《现代汉语(二)》作业 - 2
- vb-判断题库
- 贪吃对治汇总
- 关于2001年评选表彰优秀教师、优秀教育工作者的通知
- 淘宝seo
- 杭州各大高校就业办概括及联系方式
- 中学生演讲稿做一个感恩的人
- 整车行驶工况与性能匹配
- 开题报告
- 2015年下半年湖南省会计从业资格无纸化考试财经法规试题
- 2017年兰州大学计算机网络复试仿真模拟三套题 - 图文
- 大学物理教程配套习题及答案 - 陈信义主编 - 清华大学出版社出版
- 上市公司财务舞弊分析与审计对策研究