东北大学信息安全作业培训讲学

上传人:go****e 文档编号:137551532 上传时间:2020-07-09 格式:DOC 页数:10 大小:43KB
返回 下载 相关 举报
东北大学信息安全作业培训讲学_第1页
第1页 / 共10页
东北大学信息安全作业培训讲学_第2页
第2页 / 共10页
东北大学信息安全作业培训讲学_第3页
第3页 / 共10页
东北大学信息安全作业培训讲学_第4页
第4页 / 共10页
东北大学信息安全作业培训讲学_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《东北大学信息安全作业培训讲学》由会员分享,可在线阅读,更多相关《东北大学信息安全作业培训讲学(10页珍藏版)》请在金锄头文库上搜索。

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); c

5、out钥控加密后: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);

8、else 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) coutchi

9、11;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=Z) coutch1i1; else ;for(int i2=0;i2=a&ch4i2=A&ch4i2=Z) coutch4i2; else ; for(int i3

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号