欢迎来到天天文库
浏览记录
ID:41717989
大小:57.84 KB
页数:19页
时间:2019-08-30
《实验一加密算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验一加密算法1、实验背景•多表替代密码:由多个简单的替代密码构成,例如,町能有5个不同的简单替代密码,分别用于替代明文中不同位置的字符。主耍学习维吉尼亚表。•换位密码:一种早期的加密方法,明文的字母保持相同,但顺序被打乱了。•DES加密算法工作的基本原理:其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用屮
2、,密钥只用到了64位中的56位,这样才具有高的安全性。主要掌握S盒替代。2、实验目的1、实验课前复习DES加密、传统加密算法一多表替代(维吉尼亚表替代)、换位密码算法。2、任选C、C++、VC++等其中一种来实现编程实现加密算法。3、调试程序,给定一段明文,和密钥,通过加密算法,给出密文。4、目的:掌握加密算法的基本原理及其加密方法的详细步骤。3、实验所需设备安装Windows9x/2000/XP/2003操作系统和Vismdstudio6.0环境的PC。4、实验拓扑无5、实验步骤■多表替代注意红色字体代
3、码1启动VC++6.0。2新建Win32ConsoleApplication。3在ProjectName和Locate位置填上工程名weijiniya和保存位置(自选)。4按0K按钮。选AnsimpleProjecto5按Finish按钮。6在weijiniya.cpp屮添加如下代码:#include"stdafx.h〃ttinclude#inelude#inelude#ineludevoidShift()/*移位密码*/{cha
4、rc[100];intlength,i二0,key二0;//clrscr();printf("********ShiftCipher********Pleeiseinputprimalsentence:“);gets(c);length=strlen(c);printf(''Inputthekoy(0、26):;scanf("%d",&key);getchar();if(key<0){printf(zzThevalueofkeyiserror!Pressanykeytoreturn...");ge
5、tchO;return;}for(i=0;i96&&c[订〈123)c[i]=(c[i]+key-97)%26+65;elseif(c[i]>64&&c[i]<91)c[i]=(c[i]+key-65)%26+65;}printf("Rcsultis:%s",c);for(i=0;i64&&c[i]<91)c[i]=(c[i]-key-65+26)%26+97;}printf(,zAftertranslatedth
6、esentence,wecanseetheprimalsentenceasfollow:%s",c);printfC'Pressanykeytoreturn...,z);getchO;}intgcd(inta,intb)/*辗转相除法求a,b的最大公因数*/intk二0;do{k=a%b;a=b;b=k;}while(k!=0);returna;}intNi(inta,intb)/*求a相对于b的逆*/{inti=0;wh订e(a*(++i)%b!=l);returni;}voidAffine()
7、/*仿射密码*/{charc[100];intlength,i二0,ka=0,kb=0,tmp;//clrscr();printf("********AffineCipher********Ploaseinputprimalsentencc:〃);gets(c);length=strlen(c);printf("Inputthekey(2numbers):”);scanf("%d%d",&ka,&kb);getchai^();if(gcd(ka,26)!=1){printf(/zThevalueoft
8、hekeyiserror!Pressanykeytoreturn...,z);return;}for(i=0;i96&&c[i]<123)c[i]=(ka*(c[i]-97)+kb)%26+65;elseif(c[i]>64&&c[i]<91)c[i]=(ka*(c[i]-65)+kb)%26+65;}printf("Resultis:%s,z,c);for(i=0;i
此文档下载收益归作者所有