凯撒密码加密解密C语言详细代码
凯撒密码
又叫循环移位密码.它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数: E(m)=(m+k) mod n 其中:m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数. 例如,对于明文字母H,其在字母表中的位置数为8,设k=4,则按照上式计算出来的 密文为L: E(8) = (m+k) mod n = (8+4) mod 26 = 12 = L
解题思路
把一条消息中的每个字母用字母表中固定距离之后的那个字母代替。(如果超越了字母Z,会绕道字母表的起始位置。例如,如果每个字母都用字母表中两个位置之后的字母代替,那么Y就会被替换为A,Z就会被替换为B。),然后编写程序。
#include
#include
int main()
{
char passwd[100],encrypted[100];
int i,j,k,t,move,tmp;
printf("加密选择1,解密选择2:");
scanf("%d",&tmp);
if(tmp==1){
printf("输入原文:");
scanf("%s",&passwd);
printf("自定义密匙(1-25):");
scanf("%d",&move);
for(i=0; i
passwd[i] = ((passwd[i]-'A')+move)%26+'A';
}
else if(passwd[i] >= 'a' && passwd[i]
printf("输入密文:");
scanf("%s",&passwd);
printf("密匙为(1-25):");
scanf("%d",&move);
for(i=0; i
passwd[i] = ((passwd[i]-'A')+26-move)%26+'A';
}
else if(passwd[i] >= 'a' && passwd[i] |