加密解密代码Word文件下载.docx
《加密解密代码Word文件下载.docx》由会员分享,可在线阅读,更多相关《加密解密代码Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。
;
printf("
\n请输入明文!
\n"
);
fflush(stdin);
gets(show);
shlg=strlen(show);
returnshlg;
intCreatShade(charshade[])//创建密文
inti,sdlg;
shade[i]='
\n请输入密文!
gets(shade);
sdlg=strlen(shade);
returnsdlg;
intCreatKey(charkey[])//创建密钥
inti,klg;
key[i]='
\n请输入密钥!
gets(key);
key[i]!
='
klg=i+1;
returnklg;
intCheck(charData)
if((Data<
'
A'
||Data>
Z'
)&
&
(Data<
a'
z'
))
printf("
输入不正确!
return0;
elseif(Data=='
'
)
{
return1;
voidEncodeCasser()//凯撒加密算法
charShow[50],Shade[50];
shlg=CreatShow(Show);
shlg;
if(Check(Show[i]))
if(Show[i]>
Show[i]<
{
Shade[i]=Show[i]-32;
}
else
Shade[i]=Show[i];
Show[i]+=32;
if(Shade[i]+17>
Shade[i]-=9;
Shade[i]+=17;
}
else
printf("
本系统不支持空格!
请重新输入!
return;
Shade[i]='
\n明文是:
%s"
Show);
\n转换后是:
%s\n"
Shade);
voidDncodeCasser()//凯撒解密算法
sdlg=CreatShade(Shade);
sdlg;
if(Check(Shade[i]))
if(Shade[i]>
Shade[i]<
Show[i]=Shade[i]+32;
Show[i]=Shade[i];
Shade[i]-=32;
if(Show[i]-17<
Show[i]+=9;
Show[i]-=17;
}
Show[i]='
\n密文是:
voidCasser()//凯撒算法
charch;
.........凯撒密码算法.........\n"
..................\n"
.........加密解密系统.........\n"
.........A.加密.........\n"
.........B.解密.........\n"
.........Q.退出.........\n"
.........加密还是解密?
.........\n"
scanf("
%c"
&
ch);
switch(ch)
case'
:
EncodeCasser();
break;
B'
b'
DncodeCasser();
default:
}
voidEncodeInverted()//字母倒排算法加密
{
Shade[i]=187-Show[i];
voidDecodeInverted()//字母倒排算法解密
Show[i]=187-Shade[i];
voidInverted()//字母倒排算法
.........字母倒排算法.........\n"
EncodeInverted();
DecodeInverted();
voidEncodeSingleForm()//单表置换密码加密
inti,shlg,klg,j,k;
charShow[50],Shade[50],Key[26];
intcnt=26;
chartemp[26];
klg=CreatKey(Key);
Show[0]);
for(i=1;
klg;
if(Check(Key[i]))
{
for(j=0;
j<
i;
j++)
if(Key[j]==Key[i])
{
for(k=i+1;
k<
k++)
{
Key[k-1]=Key[k];
}
klg--;
i--;
j=i;
}
}
for(i=65,j=0;
91;
temp[j]=i;
j++;
cnt;
i++)//cnt是
for(j=0;
if(temp[i]==Key[j])
for(k=i+1;
temp[k-1]=temp[k];
j=klg;
cnt--;
i--;
for(i=klg,j=0;
i++,j++)
Key[i]=temp[j];
}
j=Shade[i]-65;
Shade[i]=Key[j];
voidDecodeSingleForm()//单表置换密码解密
inti,sdlg,klg,j,k;
Shade[0]);
break;
j=CharAt(Key,Shade[i]);
Show[i]=j+96;
voidSingleForm()//单表置换密码
.........单表置换算法.........\n"
EncodeSingleForm();
DecodeSingleForm();
voidEncodeVictory()//维吉利亚密码加密算法
charKey[26];
charData[50];
charShade[50];
//存取密文
intklg,dlg,i,j;
inttemp1[50],temp2[50];
Key[i]='
Data[i]='
}
请输入密钥!
(不要太长)\n"
gets(Key);
Key[i]!
i++)//获取Key的长度
i++)//将key转换为大写
if((Key[i]<
||Key[i]>
(Key[i]<
你输入的密钥不正确!
//return;
if(Key[i]>
Key[i]<
Key[i]-=32;
\n密钥是%s\n"
Key);
i++)//temp1存取key对应的数字
temp1[i]=Key[i]-65;
请输入明文!
gets(Data);
Data[i]!
i++)//获得明文的实际长度
dlg=i+1;
dlg;
i++)//获得明文的内容并将明文转换为小写
if((Data[i]<
||Data[i]>
(Data[i]<
你输入的明文不正确!
if(Data[i]>
Data[i]<
Data[i]+=32;
\n明文是%s\n"
Data);
i++)//temp2存取明文对应的数字
temp2[i]=Data[i]-97;
for(i=klg;
i++)//设置temp1和temp2的长度相同
if(i%klg==j)
temp1[i]=temp1[j];
Shade[i]=(temp1[i]+temp2[i])%26+65;
密文是:
"
puts(Shade);
voidDecodeVictory()//维吉利亚密码解密算法
charshow[50];
//存取明文
intklg,slg,i,j;
Shade[i]='
请输入密文!
//fflush(stdin);
gets(Shade);
Shade[i]!
slg=i+1;
slg;
i++)//获得密文的内容并将明文转换为小写
if((Shade[i]<
||Shade[i]>
(Shade[i]<
你输入的密文不正确!
Shade[i]+=32;
\n密文是%s\n"
i++)//temp2存取密文对应的数字
temp2[i]=Shade[i]-97;
if((Shade[i]-97)-temp1[i]<
0)
Shade[i]+=26;
show[i]=Shade[i]-temp1[i];
show[i]='
puts(show);
voidVictory()
.........维吉利亚算法.........\n"
.......