加密解密代码.docx
- 文档编号:8691523
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:30
- 大小:19.11KB
加密解密代码.docx
《加密解密代码.docx》由会员分享,可在线阅读,更多相关《加密解密代码.docx(30页珍藏版)》请在冰豆网上搜索。
加密解密代码
#include
#include
#include
#defineL50
#definel26
intCharAt(charstr[],charch)//此方法是用来寻找字符在字符串中的位置
{
inti;//,lg;
//lg=strlen(str);
for(i=0;i<26;i++)
{
if(str[i]==ch)
{
returni+1;
}
}
return-1;
}
intCreatShow(charshow[])//创建明文
{
inti,shlg;
for(i=0;i<50;i++)
{
show[i]='\0';
}
printf("\n请输入明文!
\n");
fflush(stdin);
gets(show);
shlg=strlen(show);
returnshlg;
}
intCreatShade(charshade[])//创建密文
{
inti,sdlg;
for(i=0;i<50;i++)
{
shade[i]='\0';
}
printf("\n请输入密文!
\n");
fflush(stdin);
gets(shade);
sdlg=strlen(shade);
returnsdlg;
}
intCreatKey(charkey[])//创建密钥
{
inti,klg;
for(i=0;i<26;i++)
{
key[i]='\0';
}
printf("\n请输入密钥!
\n");
fflush(stdin);
gets(key);
for(i=0;key[i]!
='\0';i++)
{
klg=i+1;
}
returnklg;
}
intCheck(charData)
{
if((Data<'A'||Data>'Z')&&(Data<'a'||Data>'z'))
{
printf("输入不正确!
\n");
return0;
}
elseif(Data=='')
{
return0;
}
return1;
}
voidEncodeCasser()//凯撒加密算法
{
inti,shlg;
charShow[50],Shade[50];
shlg=CreatShow(Show);
for(i=0;i { if(Check(Show[i])) { if(Show[i]>='a'&&Show[i]<='z') { Shade[i]=Show[i]-32; } else { Shade[i]=Show[i]; Show[i]+=32; } if(Shade[i]+17>'Z') { Shade[i]-=9; } else { Shade[i]+=17; } } else { printf("本系统不支持空格! 请重新输入! \n"); return; } } Shade[i]='\0'; printf("\n明文是: %s",Show); printf("\n转换后是: %s\n",Shade); } voidDncodeCasser()//凯撒解密算法 { inti,sdlg; charShow[50],Shade[50]; sdlg=CreatShade(Shade); for(i=0;i { if(Check(Shade[i])) { if(Shade[i]>='A'&&Shade[i]<='Z') { Show[i]=Shade[i]+32; } else { Show[i]=Shade[i]; Shade[i]-=32; } if(Show[i]-17<'a') { Show[i]+=9; } else { Show[i]-=17; } } else { printf("本系统不支持空格! 请重新输入! \n"); return; } } Show[i]='\0'; printf("\n密文是: %s",Shade); printf("\n转换后是: %s\n",Show); } voidCasser()//凯撒算法 { charch; printf(".........凯撒密码算法.........\n"); printf("..................\n"); printf(".........加密解密系统.........\n"); printf(".........A.加密.........\n"); printf(".........B.解密.........\n"); printf(".........Q.退出.........\n"); printf(".........加密还是解密? .........\n"); fflush(stdin); scanf("%c",&ch); switch(ch) { case'A': case'a': EncodeCasser(); break; case'B': case'b': DncodeCasser(); break; default: break; } } voidEncodeInverted()//字母倒排算法加密 { inti,shlg; charShow[50],Shade[50]; shlg=CreatShow(Show); for(i=0;i { if(Check(Show[i])) { if(Show[i]>='A'&&Show[i]<='Z') { Show[i]+=32; } else { } Shade[i]=187-Show[i]; } else { printf("本系统不支持空格! 请重新输入! \n"); return; } } Shade[i]='\0'; printf("\n明文是: %s",Show); printf("\n转换后是: %s\n",Shade); } voidDecodeInverted()//字母倒排算法解密 { inti,sdlg; charShow[50],Shade[50]; sdlg=CreatShade(Shade); for(i=0;i { if(Check(Shade[i])) { if(Shade[i]>='a'&&Shade[i]<='z') { Shade[i]-=32; } else { } Show[i]=187-Shade[i]; } else { printf("本系统不支持空格! 请重新输入! \n"); return; } } Show[i]='\0'; printf("\n密文是: %s",Shade); printf("\n转换后是: %s\n",Show); } voidInverted()//字母倒排算法 { charch; printf(".........字母倒排算法.........\n"); printf("..................\n"); printf(".........加密解密系统.........\n"); printf(".........A.加密.........\n"); printf(".........B.解密.........\n"); printf(".........Q.退出.........\n"); printf(".........加密还是解密? .........\n"); fflush(stdin); scanf("%c",&ch); switch(ch) { case'A': case'a': EncodeInverted(); break; case'B': case'b': DecodeInverted(); break; default: break; } } voidEncodeSingleForm()//单表置换密码加密 { inti,shlg,klg,j,k; charShow[50],Shade[50],Key[26]; intcnt=26; chartemp[26]; klg=CreatKey(Key); shlg=CreatShow(Show); printf("%c",Show[0]); for(i=1;i { if(Check(Key[i])) { for(j=0;j { if(Key[j]==Key[i]) { for(k=i+1;k { Key[k-1]=Key[k]; } klg--; i--; j=i; } } } else { printf("本系统不支持空格! 请重新输入! \n"); return; } } for(i=65,j=0;i<91;i++) { temp[j]=i; j++; } for(i=0;i { for(j=0;j { if(temp[i]==Key[j]) { for(k=i+1;k { temp[k-1]=temp[k]; } j=klg; cnt--; i--; } } } for(i=klg,j=0;i<26;i++,j++) { Key[i]=temp[j]; } for(i=0;i { if(Check(Show[i])) { if(Show[i]>='a'&&Show[i]<='z') { Shade[i]=Show[i]-32; } else { Shade[i]=Show[i]; Show[i]+=32; } j=Shade[i]-65; Shade[i]=Key[j]; } else { printf("本系统不支持空格! 请重新输入! \n"); return; } } Shade[i]='\0'; printf("\n明文是: %s",Show); printf("\n转换后是: %s\n",Shade); } voidDecodeSingleForm()//单表置换密码解密 { inti,sdlg,klg,j,k; charShow[50],Shade[50],Key[26]; intcnt=26; chartemp[26]; klg=CreatKey(Key); sdlg=CreatShade(Shade); printf("%c",Shade[0]); for(i=1;i { if(Check(Key[i])) { for(j=0;j { if(Key[j]==Key[i]) { for(k=i+1;k { Key[k-1]=Key[k]; } klg--; i--; j=i; } } } else { printf("本系统不支持空格! 请重新输入! \n"); break; } } for(i=65,j=0;i<91;i++) { temp[j]=i; j++; } for(i=0;i { for(j=0;j { if(temp[i]==Key[j]) { for(k=i+1;k { temp[k-1]=temp[k]; } j=klg; cnt--; i--; } } } for(i=klg,j=0;i<26;i++,j++) { Key[i]=temp[j]; } for(i=0;i { if(Check(Shade[i])) { if(Shade[i]>='a'&&Shade[i]<='z') { Show[i]=Shade[i]; Shade[i]-=32; } else { Show[i]=Shade[i]+32; } j=CharAt(Key,Shade[i]); Show[i]=j+96; } else { printf("本系统不支持空格! 请重新输入! \n"); break; } } Show[i]='\0'; printf("\n密文是: %s",Shade); printf("\n转换后是: %s\n",Show); } voidSingleForm()//单表置换密码 { charch; printf(".........单表置换算法.........\n"); printf("..................\n"); printf(".........加密解密系统.........\n"); printf(".........A.加密.........\n"); printf(".........B.解密.........\n"); printf(".........Q.退出.........\n"); printf(".........加密还是解密? .........\n"); fflush(stdin); scanf("%c",&ch); switch(ch) { case'A': case'a': EncodeSingleForm(); break; case'B': case'b': DecodeSingleForm(); break; default: break; } } voidEncodeVictory()//维吉利亚密码加密算法 { charKey[26]; charData[50]; charShade[50];//存取密文 intklg,dlg,i,j; inttemp1[50],temp2[50]; for(i=0;i<26;i++) { Key[i]='\0'; } for(i=0;i<50;i++) { Data[i]='\0'; } printf("请输入密钥! (不要太长)\n"); fflush(stdin); gets(Key); for(i=0;Key[i]! ='\0';i++)//获取Key的长度 { klg=i+1; } for(i=0;i { if((Key[i]<'A'||Key[i]>'Z')&&(Key[i]<'a'||Key[i]>'z')) { printf("你输入的密钥不正确! \n"); //return; } else if(Key[i]>='a'&&Key[i]<='z') { Key[i]-=32; } } printf("\n密钥是%s\n",Key); for(i=0;i { temp1[i]=Key[i]-65; } printf("请输入明文! \n"); fflush(stdin); gets(Data); for(i=0;Data[i]! ='\0';i++)//获得明文的实际长度 { dlg=i+1; } for(i=0;i { if((Data[i]<'A'||Data[i]>'Z')&&(Data[i]<'a'||Data[i]>'z')) { printf("你输入的明文不正确! \n"); //return; } else if(Data[i]>='A'&&Data[i]<='Z') { Data[i]+=32; } } printf("\n明文是%s\n",Data); for(i=0;i { temp2[i]=Data[i]-97; } for(i=klg;i { for(j=0;j { if(i%klg==j) { temp1[i]=temp1[j]; } } } for(i=0;i { Shade[i]=(temp1[i]+temp2[i])%26+65; } Shade[i]='\0'; printf("密文是: "); puts(Shade); printf("\n"); } voidDecodeVictory()//维吉利亚密码解密算法 { charKey[26]; charshow[50];//存取明文 charShade[50];//存取密文 intklg,slg,i,j; inttemp1[50],temp2[50]; for(i=0;i<26;i++) { Key[i]='\0'; } for(i=0;i<50;i++) { Shade[i]='\0'; } printf("请输入密钥! (不要太长)\n"); fflush(stdin); gets(Key); for(i=0;Key[i]! ='\0';i++)//获取Key的长度 { klg=i+1; } for(i=0;i { if((Key[i]<'A'||Key[i]>'Z')&&(Key[i]<'a'||Key[i]>'z')) { printf("你输入的密钥不正确! \n"); //return; } else if(Key[i]>='a'&&Key[i]<='z') { Key[i]-=32; } } printf("\n密钥是%s\n",Key); for(i=0;i { temp1[i]=Key[i]-65; } printf("请输入密文! \n"); //fflush(stdin); gets(Shade); for(i=0;Shade[i]! ='\0';i++)//获得明文的实际长度 { slg=i+1; } for(i=0;i { if((Shade[i]<'A'||Shade[i]>'Z')&&(Shade[i]<'a'||Shade[i]>'z')) { printf("你输入的密文不正确! \n"); //return; } else if(Shade[i]>='A'&&Shade[i]<='Z') { Shade[i]+=32; } } printf("\n密文是%s\n",Shade); for(i=0;i { temp2[i]=Shade[i]-97; } for(i=klg;i { for(j=0;j { if(i%klg==j) { temp1[i]=temp1[j]; } } } for(i=0;i { if((Shade[i]-97)-temp1[i]<0) { Shade[i]+=26; } show[i]=Shade[i]-temp1[i]; } show[i]='\0'; printf("\n明文是: "); puts(show); printf("\n"); } voidVictory() { charch; printf(".........维吉利亚算法.........\n"); printf("..................\n"); printf(".........加密解密系统.........\n"); printf(".........A.加密.........\n"); printf(".........B.解密.........\n"); printf(".......
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 加密 解密 代码
![提示](https://static.bdocx.com/images/bang_tan.gif)