东北大学信息安全作业(共9页)

上传人:94****0 文档编号:55250265 上传时间:2022-02-17 格式:DOC 页数:9 大小:44KB
收藏 版权申诉 举报 下载
东北大学信息安全作业(共9页)_第1页
第1页 / 共9页
东北大学信息安全作业(共9页)_第2页
第2页 / 共9页
东北大学信息安全作业(共9页)_第3页
第3页 / 共9页
资源描述:

《东北大学信息安全作业(共9页)》由会员分享,可在线阅读,更多相关《东北大学信息安全作业(共9页)(9页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上作业(一)(1).编程实现双轨加密#include#include开始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中else ch2i=chj;i+;j+;while(ki)输出str1+str2 str1+=ch2k; k+;结束 str2+=ch2k; k+;

2、return str1+str2;int main()cout请输入明文:; gets(ch1); cout双轨加密后:shuanggui(ch1)endl;return 0;(2).编程实现钥控算法开始#include#includeusing namespace std;读入明文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,

3、int high) if(low = high) c2n=ch2m return; int first = low; int last = high;n=n+1 char key = chfirst; /用字表的第一个记录作为枢轴 while(first last)nN while(first = key) -last; m=m+1 chfirst = chlast; /将比第一个小的移到低端nN while(first last & chfirst = key) +first; 输出密文矩阵 chlast = chfirst; /将比第一个大的移到高端 结束 chfirst = key; /

4、枢轴记录到位 Qsort(ch, low, first-1); Qsort(ch, first+1, high);void 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); co

5、ut钥控加密后:endl;for(int m=0;m=N;m+) for(int n=0;nN;n+) if(ch4n=ch2m) if(i%N=0) for(int j=0;ji/N;j+) coutch3jn; else for(int j=0;j=a&ch3jn=A&ch3jn=Z) coutch3jn; else ; coutendl; else ; void main()char c1100; /明文 char c220; /密钥cout请输入明文:;gets(c1);cout请输入密钥:; gets(c2); N=len(c2); M=len(c1);yuekong(c1,c2);

6、作业(二)(1)编程实现求乘法逆元;#include int ExtendedEuclid( int f,int d ,int *result) int x1,x2,x3,y1,y2,y3,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为其乘法逆元,

7、此时返回值为1 return 1; q = x3/y3; t1 = x1 - q*y1; t2 = x2 - q*y2; t3 = x3 - q*y3; x1 = y1; 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=xy?x:y;min=x0) printf(%d和%d互素,乘法的逆元是:%dn,x,y,z);else printf(%d和%d互素,乘法逆元是:%dn,x,y,z+max); e

8、lse printf(%d和%d不互素,最大公约数为:%dn,x,y,z); return 0; (2)编程实现换位密码;#include#includeusing 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+;return j;void Lieout(char ch4) /列换位输出cout列换位加密后:; for(int i1=0;i1=a&chi11=A&chi11=Z) coutchi1

9、1;else ; for(int i2=0;i2=a&chi23=A&chi23=Z) coutchi23;else ; for(int i3=0;i3=a&chi30=A&chi30=Z) coutchi30;else ; for(int i4=0;i4=a&chi42=A&chi42=Z) coutchi42;else ; coutendl;void Hangout(char ch4) /行换位输出cout行换位加密后:; for(int i0=0;i0=a&ch3i0=A&ch3i0=Z) coutch3i0; else ;for(int i1=0;i1=a&ch1i1=A&ch1i1=

10、Z) coutch1i1; else ;for(int i2=0;i2=a&ch4i2=A&ch4i2=Z) coutch4i2; else ; for(int i3=0;i3=a&ch0i3=A&ch0i3=Z) coutch0i3;else ; for(int i4=0;i4=a&ch2i4=A&ch2i4=Z) coutch2i4;else ; coutendl;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=c

11、hi;j0+;else if(i%4=3)ch1j1=chi;j1+;else if(i%4=0)ch2j2=chi;j2+;else if(i%4=2)ch3j3=chi;j3+;else ;i+;cout周期换位加密后:; for(int k=0;k=a&ch0k=A&ch0k=Z) cout=a&ch1k=A&ch1k=Z)cout=a&ch2k=A&ch2k=Z)cout=a&ch3k=A&ch3k=Z)coutch3k;coutendl;void huanwei(char *ch,int x) /换位加密char ch254;int i=0,j=0;while(chi!=0)if(c

12、hi!= ) 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;a5;a+) coutt;for(int b=0;b=a&ch2ab=A&ch2ab=Z) coutch2ab ;else ;coutendl; else ;if(x=1) Lieout(ch2);else if(x=2)Hangout(ch2);else if(x=3)Zhouqiout(ch1);else ;int main()cout请输入明文(最多包含20个字母,空格

13、不限):20)cout明文字母过长,请重新输入:endl;gets(ch);cout-endl;coutt1.列换位endl; coutt2.行换位endl;coutt3.周期换位endl;cout-endl;coutx;while(x!=1&x!=2&x!=3)coutx; huanwei(ch,x);return 0;(3)举例说明Legendre符号的作用。验证:a=5是否是p=11的二次剩余?L(a,p) = a(p-1)/2 mod p=5(11-1)/2 mod 11=55 mod 11=1 即 L(5,11) =1 所以5是模11的二次剩余 (72 5 mod 11) 再如: L(6,11)= 6(11-1)/2 mod 11=65 mod 11=10=p-1 所以6不是模11的二次剩余作业(三)内容:用Vigenere密码加密明文要求:明文自选 密钥为自己的姓名全拼缩写明文: I N T E L L I G E N T密钥: 专心-专注-专业

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!