供参考 译码只需要一句即可
感兴趣自己分析下
#include stdio.h
int main()
{
char s[100];
int k;
int i;
while(~scanf("%s%d", s, k))
{
k%=26;
for(i = 0; s[i]; i ++)
s[i] = (s[i] - 'A' + 26 - (k+i + 1)%26)%26 + 'A';
printf("%s\n", s);
}
return 0;
}
#includestdio.h
#includestring.h
#define PASSWORD 3
int main()
{
char c;
FILE *source = fopen("source.txt","r");//源 解密时将该源文件换成加密后的文件
FILE *result = fopen("result.txt","w");//处理结果
while((c=fgetc(source))!=EOF)//加密
{
if(c='a'c='z')
c='a'+(c-'a'+PASSWORD)%26;
else if(c='A'c='Z')
c='A'+(c-'A'+PASSWORD)%26;
fputc(c,result);
}
/*
while((c=fgetc(source))!=EOF)//解密 解密时将加密部分注释掉
{
if(c='a'c='z')
c='a'+(c-'a'+26-PASSWORD)%26;
else if(c='A'c='Z')
c='A'+(c-'A'+26-PASSWORD)%26;
fputc(c,result);
}
*/
close(source);
close(result);
system("pause");
return 0;
}
这是之前写的,可以看看
凯撒密码就是简单的加上一个数,'a'+3='d';'z'+3='c' 假设原文全是小写字母,那么 char plain[N]={...}; //明文 char cipher[N]={};//密文 int key=3; int i=0,temp; for(i=0;iN;i++) {if(plain[i]!=' ') {temp=plain[i]+key-'a'; temp=temp%26; cipher[i]=temp+'a'; } else cipher[i]=plain[i]; } 这样就完成了加密,密文数组里面就是对原文加密后的密文,key是密钥。
#include stdio.h
#include string.h
int main()
{
int i = 0;
int len = 0;
char ch;
char buf[256] = {0};
char nor[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char enc[26] = {'s','u','w','y','a','c','e','g','i','k','m','o','q','r','t','v','x','z','b','d','f','h','j','l','n','p'};
printf("Encode or Decode: ");
scanf("%c",ch);
printf("please input your string: ");
fflush(stdin);
gets(buf);
len = strlen(buf);
switch (ch)
{
case 'e':
case 'E':
for (i=0;ilen;i++)
{
buf[i] = enc[buf[i] - 'a'];
}
break;
case 'd':
case 'D':
for (i=0;ilen;i++)
{
buf[i] = nor[i];
}
break;
default:
printf("wrong input!\n");
}
printf("%s\n",buf);
return 0;
}
#include stdio.h
#define isletter( c ) ( ((c)='a'(c)='z') || ((c)='A'(c)='Z') )
void Enc( const char *str, char *out, int key )
{
int i = 0;
while( str[i] )
{
if ( isletter( str[i] ) )
{
out[i] = str[i] + key;
if ( ! isletter( out[i]) )
out[i] -= 26;
}
else
out[i] = str[i];
i++;
}
out[i] = 0;
}
void Denc( const char *str, char *out, int key )
{
int i=0;
while( str[i] )
{
if ( isletter( str[i] ) )
{
out[i] = str[i] - key;
if ( ! isletter( out[i] ) )
out[i] += 26;
}
else
out[i] = str[i];
i++;
}
out[i] = 0;
}
int main()
{
char out[100], out2[100];
Enc( "THE QUICK BROWn fox jumps over THE LAZY DOG", out, 3 );
printf( "%s\n", out );
Denc( out, out2, 3 );
printf( "%s\n", out2 );
}