




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上作业(一)(1).编程实现双轨加密#include<iostream>#include<string>开始using namespace std;char ch130;char ch230;从键盘读入明文ch1int i;string shuanggui(char *ch) 去除空格ch2int j=0,k=0;i=0;string str1=""偶数位字符string str2=""while(chj!='0')否是if(chj=' ');加到str1中加到str2中el
2、se ch2i=chj;i+;j+;while(k<i)输出str1+str2 str1+=ch2k; k+;结束 str2+=ch2k; k+;return str1+str2;int main()cout<<"请输入明文:" gets(ch1); cout<<"双轨加密后:"<<shuanggui(ch1)<<endl;return 0;(2).编程实现钥控算法开始#include<iostream>#include<string>using namespace std;读
3、入明文c1,密钥c2 int N;int M;int len(char *ch)计算明文、密钥的实际长度M、N /计算密钥长度、明文长度 int i=0;while(chi!='0')i+;生成二维字符数组return i;/快速排序对密钥数组进行一次快速排序ch2void Qsort(char *ch, int low, int high) if(low >= high) c2n=ch2m return; int first = low; int last = high;n=n+1 char key = chfirst; /用字表的第一个记录作为枢轴 while(fir
4、st < last)n<N while(first < last && chlast >= key) -last; m=m+1 chfirst = chlast; /将比第一个小的移到低端n<N while(first < last && chfirst <= key) +first; 输出密文矩阵 chlast = chfirst; /将比第一个大的移到高端 结束 chfirst = key; /枢轴记录到位 Qsort(ch, low, first-1); Qsort(ch, first+1, high);void
5、yuekong(char *ch0,char *ch2)int i=0,k=0,j=0;char ch31010;char ch410,ch1100;while(ch0j!='0') /除去空格if(ch0j=' ');else ch1i=ch0j;i+;j+;ch1i+1='0'i=0;j=0;while(ch1i!='0') /生成二维字符数组 ch3i/Ni%N=ch1i; i+; for(int l=0;l<=N;l+)ch4l=ch2l;Qsort(ch2,0,N-1); cout<<"钥控加
6、密后:"<<endl;for(int m=0;m<=N;m+) for(int n=0;n<N;n+) if(ch4n=ch2m) if(i%N=0) for(int j=0;j<i/N;j+) cout<<ch3jn; else for(int j=0;j<(i/N+1);j+) if(ch3jn>='a'&&ch3jn<='z')|(ch3jn>='A'&&ch3jn<='Z') cout<<ch3jn
7、; else ; cout<<endl; else ; void main()char c1100; /明文 char c220; /密钥cout<<"请输入明文:"gets(c1);cout<<"请输入密钥:" gets(c2); N=len(c2); M=len(c1);yuekong(c1,c2);作业(二)(1)编程实现求乘法逆元;#include <stdio.h> int ExtendedEuclid( int f,int d ,int *result) int x1,x2,x3,y1,y2,y
8、3,t1,t2,t3,q; x1 = y2 = 1; x2 = y1 = 0; x3 = ( f>=d )?f:d;y3 = ( f>=d )?d:f; while( 1 ) if ( y3 = 0 ) *result = x3; / 两个数不互素则result为两个数的最大公约数,此时返回值为零 return 0; if ( y3 = 1 ) *result = y2; / 两个数互素则resutl为其乘法逆元,此时返回值为1 return 1; q = x3/y3; t1 = x1 - q*y1; t2 = x2 - q*y2; t3 = x3 - q*y3; x1 = y1;
9、 x2 = y2; x3 = y3; y1 = t1; y2 = t2; y3 = t3; int main() int x,y,z,max,min; z = 0; printf("请输入两个数:n"); scanf("%d%d",&x,&y); max=x>y?x:y;min=x<y?x:y;if(ExtendedEuclid(min,max,&z) if(z>0) printf("%d和%d互素,乘法的逆元是:%dn",x,y,z);else printf("%d和%d互素,乘法
10、逆元是:%dn",x,y,z+max); else printf("%d和%d不互素,最大公约数为:%dn",x,y,z); return 0; (2)编程实现换位密码;#include<iostream>#include<string>using namespace std;char ch30;char ch130;int x;int len(char *ch)int i=0,j=0;char c120;while(chi!='0')if(chi!=' ') c1j=chi;j+;else ;i+;retu
11、rn j;void Lieout(char ch4) /列换位输出cout<<"列换位加密后:" for(int i1=0;i1<5;i1+) if(chi11>='a'&&chi11<='z')|(chi11>='A'&&chi11<='Z') cout<<chi11;else ; for(int i2=0;i2<5;i2+) if(chi23>='a'&&chi23<=
12、39;z')|(chi23>='A'&&chi23<='Z') cout<<chi23;else ; for(int i3=0;i3<5;i3+) if(chi30>='a'&&chi30<='z')|(chi30>='A'&&chi30<='Z') cout<<chi30;else ; for(int i4=0;i4<5;i4+) if(chi42>='a&
13、#39;&&chi42<='z')|(chi42>='A'&&chi42<='Z') cout<<chi42;else ; cout<<endl;void Hangout(char ch4) /行换位输出cout<<"行换位加密后:" for(int i0=0;i0<4;i0+) if(ch3i0>='a'&&ch3i0<='z')|(ch3i0>='A'
14、&&ch3i0<='Z') cout<<ch3i0; else ;for(int i1=0;i1<4;i1+) if(ch1i1>='a'&&ch1i1<='z')|(ch1i1>='A'&&ch1i1<='Z') cout<<ch1i1; else ;for(int i2=0;i2<4;i2+) if(ch4i2>='a'&&ch4i2<='z
15、9;)|(ch4i2>='A'&&ch4i2<='Z') cout<<ch4i2; else ; for(int i3=0;i3<4;i3+) if(ch0i3>='a'&&ch0i3<='z')|(ch0i3>='A'&&ch0i3<='Z') cout<<ch0i3;else ; for(int i4=0;i4<4;i4+) if(ch2i4>='a'&a
16、mp;&ch2i4<='z')|(ch2i4>='A'&&ch2i4<='Z') cout<<ch2i4;else ; cout<<endl;void Zhouqiout(char *ch) /周期换位输出char ch05,ch15,ch25,ch35;int i=0,j0=0,j1=0,j2=0,j3=0;while(chi!='0')if(i%4=1)ch0j0=chi;j0+;else if(i%4=3)ch1j1=chi;j1+;else if(i%4=0
17、)ch2j2=chi;j2+;else if(i%4=2)ch3j3=chi;j3+;else ;i+;cout<<"周期换位加密后:" for(int k=0;k<5;k+)if(ch0k>='a'&&ch0k<='z'|ch0k>='A'&&ch0k<='Z') cout<<ch0k; if(ch1k>='a'&&ch1k<='z'|ch1k>='A
18、'&&ch1k<='Z')cout<<ch1k;if(ch2k>='a'&&ch2k<='z'|ch2k>='A'&&ch2k<='Z')cout<<ch2k;if(ch3k>='a'&&ch3k<='z'|ch3k>='A'&&ch3k<='Z')cout<<ch3k;cou
19、t<<endl;void huanwei(char *ch,int x) /换位加密char ch254;int i=0,j=0;while(chi!='0')if(chi!=' ') ch1j=chi;j+;else ;i+;ch1j='0'j=0; while(ch1j!='0')ch2j/4j%4=ch1j;j+;if(x=1|x=2) cout<<"明文矩阵:"<<endl; for(int a=0;a<5;a+) cout<<"t&quo
20、t;for(int b=0;b<4;b+)if(ch2ab>='a'&&ch2ab<='z')|(ch2ab>='A'&&ch2ab<='Z') cout<<ch2ab<<" "else ;cout<<endl; else ;if(x=1) Lieout(ch2);else if(x=2)Hangout(ch2);else if(x=3)Zhouqiout(ch1);else ;int main()cout<<"请输入明文(最多包含20个字母,空格不限):"<<endl;gets(ch);while(len(ch)>20)cout<<"明文字母过长,请重新输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海市青浦区2022届高三二模化学试题 含解析
- 浙江省金华第一中学2023-2024学年高一上学期11月期中考试化学 无答案
- 无人机驾驶员执照考试技巧与试题及答案
- 护师综合素质试题及答案
- 初级审计经验分享与复习方法试题及答案
- 民用航空器维修执照通过技巧试题及答案
- 一级建造师考试前的课程安排与复习策略试题及答案
- 消防工程对接实际需求试题及答案
- 四年级数学(四则混合运算带括号)计算题专项练习与答案
- 消防知识体系建设与完善试题及答案
- 第15课+十月革命的胜利与苏联的社会主义实践【高效备课精研 + 知识精讲提升】 高一历史 课件(中外历史纲要下)
- 大学写作课课件-Chapter3-Effective-Sentences
- 灭火器维修与报废规程
- (4.3.1)-3.3我国储粮生态区的分布
- GB/T 19929-2005土方机械履带式机器制动系统的性能要求和试验方法
- 企业公司早会晨会年会团建小游戏“看图猜电影电视名”互动游戏
- 110~750kV架空输电线路设计规范方案
- 车辆采购、维修服务投标方案
- 药剂科病房麻醉药品精神药品处方流程
- 智慧楼宇设计方案.pdf
- 外架悬挑防护棚施工方案完整
评论
0/150
提交评论