c語言凱撒加密
A. 凱撒密碼,c語言,求救!
#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;i<len;i++)
{
buf[i] = enc[buf[i] - 'a'];
}
break;
case 'd':
case 'D':
for (i=0;i<len;i++)
{
buf[i] = nor[i];
}
break;
default:
printf("wrong input!\n");
}
printf("<%s>\n",buf);
return 0;
}
B. 用C語言實現凱撒密碼加密解密,急!
忘了說解密了,解密過程完全可以使用上面的代碼,只要把key的值改成26-key就行了。比如,加密的密鑰是3,那麼解密密鑰就是23,這樣就可以使用同一段代碼。至於為什麼+23和-3的效果一樣,還請翻閱數論有關剩餘類環的知識。
C. C語言的凱撒加密
/*
和樓上的相比,或許 看上去很煩
ch[i] +=5;
if (ch[i] > 'Z')
{
ch[i] -= 26;
}
可以改成和 樓上的 方法
等價於 ch[i] = 'A' + (ch[i] - 'A' + 5) % 26;
*/
# include <stdio.h>
# include <stdlib.h> //用到了system(); 不寫 ,可以用 getchar();
#define strwidth 117 //定義長度
int main(void)
{
char ch[strwidth];
int i ;
printf("請輸入密碼:");
gets(ch); //輸入數據,用gets(); 保留了空格
for (i = 0; i < strwidth ;i++ )
{
if (ch[i] >= 'a' && ch[i] <= 'z' ) //判斷是否小寫字母
{
ch[i] +=5;
if (ch[i] > 'z') //不解釋,我想這樣,理解可能會方便點吧
{
ch[i] -= 26;
}
}
else if ( ch[i] >= 'A' && ch[i] <= 'Z') //判斷是否大寫字母
{
ch[i] +=5;
if (ch[i] > 'Z')
{
ch[i] -= 26;
}
}
}
printf("加密後為:%s\n" , ch); //輸出數據
system("pause");
return 0;
}
/*
或者 這樣
*/
# include <stdio.h>
# include <stdlib.h> //用到了system(); 不寫 ,可以用 getchar();
#define strwidth 117 //定義長度
int main(void)
{
char ch[strwidth];
int i ;
printf("請輸入密碼:");
gets(ch); //輸入數據,用gets(); 保留了空格
for (i = 0; i < strwidth ;i++ )
{
if (ch[i] >= 'a' && ch[i] <= 'z' || ch[i] >= 'A' && ch[i] <= 'Z' ) //判斷是否是字母
{
ch[i] +=5;
if ( ch[i]>'Z' && ch[i] <= 'Z' + 5 || ch[i] > 'z' )
{
ch[i] -= 26;
}
}
}
printf("加密後為:%s\n" , ch); //輸出數據
system("pause");
return 0;
}
D. 請問一下這道C語言編程題怎麼做
按照題目要求編寫的用凱撒密碼加密的C語言程序如下
#include<stdio.h>
int main(){
char s[80];
int offset,i;
fgets(s,80,stdin);
scanf("%d",&offset);
for(i=0;s[i]!='