資源簡介
C語言實現凱撒和維吉尼亞附帶密鑰的加解密,是計算機網絡與信息安全大作業
代碼片段和文件信息
#include??
#include?
#include??
#include??
#include??
#include?
#include
using?namespace?std;
void?Shift()?/*移位密碼*/?
{?
char?c[100];?
int?length?i=0?key=0;?
////clrscr();?
????
printf(“********使用凱撒加密********\n請輸入要加密內容:\n?“);?
cin?>>?c;?
printf(“********使用凱撒加密********\n請輸入你的密鑰(必須是整數):\n?“);?
scanf(“%d“&key);
length?=?strlen(c);?
for(i=0;?i {?
if(c[i]>=‘A‘&&c[i]<=‘Z‘)?
c[i]?=?(c[i]+key-‘A‘)%26+‘A‘;?
else?if(c[i]>=‘a‘&&c[i]<=‘z‘)?
c[i]?=?(c[i]+key-‘a‘)%26+‘a‘;?
}?
printf(“密文:?%s\n“?c);?
printf(“按任意鍵返回\n“);?
getch();?
}?
int?gcd(int?a?int?b)?/*輾轉相除法求ab的最大公因數*/?
{?
int?k?=?0;?
do?
{?
k?=?a%b;?
a?=?b;?
b?=?k;?
}while(k!=0);?
return?a;?
}?
int?Ni(int?a?int?b)?/*求a相對于b的逆*/?
{?
int?i?=?0;?
while(a*(++i)%b!=1);?
return?i;?
}?
void?DeShift()?/*凱撒密碼解密*/?
{?
char?c[100];?
int?length?i=0?key=7;?
////clrscr();?
printf(“********使用凱撒解密********\n請輸入要解密內容:\n“);?
cin?>>?c;?
printf(“密文:?%s\n“?c);?
printf(“********使用凱撒解密********\n請輸入你的密鑰(必須是整數):\n“);?
scanf(“%d“&key);
length?=?strlen(c);?
for(i=0;?i {?
if(c[i]>=‘A‘&&c[i]<=‘Z‘)?
c[i]?=?(c[i]-key+26-‘A‘)%26+‘A‘;?
else?if(c[i]>=‘a‘&&c[i]<=‘z‘)?
c[i]?=?(c[i]-key+26-‘a‘)%26+‘a‘;?
}?
printf(“明文:?%s\n“?c);?
printf(“按任意鍵返回...\n“);?
getch();?
}?
void?Vigenere()?/*維吉利亞密碼*/?
{?
????const?int?M=30;
????int?m=0n=0;
????char?p[M];
????char?k[M];
????char?c[M];
cout<<“********維吉利亞加密********\n請輸入要加密內容:(按#號結束):“< ?????????int?i=0;
?????????cin>>p[i];
?????????for(i=1;i ?????????????????????m++;
?????????????????????cin>>p[i];}
?????????
??????????int?plen=i-1;?
??????cout<<“key:(按#號結束):“< ????????i=0;
?????????cin>>k[i];
????????
????????for(i=1;i ?????????????????????n++;
?????????????????????cin>>k[i];}?
int?pwlen=i-1;
???cout<<“密文:“< ???for(int?i=0j=0;i j=i%pwlen;?????????????????????
??????if(p[i]==‘?‘){
???????i++;
???????m--;
????????continue;}
??????else{
?????????if(p[i]>=‘A‘&
- 上一篇:C H264格式 轉MP4格式
- 下一篇:職工信息管理系統C 鏈表
評論
共有 條評論