凱撒密碼的實現(10分)
題目內容:
凱撒密碼(caeser)是羅馬擴張時期朱利斯?凱撒(Julius Caesar)創造的,用於加密通過信使傳遞的作戰命令。它將字母表中的字母移動一定位置而實現加密。
他的原理很簡單,說到底就是字母與字母之間的替換。每一個字母按字母表順序向后移3位,如a加密后變成d,b加密后變成e,……x加密后變成a,y加密后變成b,z加密后變成c。
例如:“baidu”用凱撒密碼法加密后字符串變為“edlgx”。
試寫一個算法,將鍵盤輸入的文本字符串(只包含a~z的字符)進行加密后輸出。
輸入格式:
字符串 后面跟一個字母”;“
注意這里用英文分號”;“作為輸入的結束符號
輸出格式:
字符串
輸入樣例:
baidu;
輸出樣例:
edlgx
編碼:
#include <stdio.h>
#include <string.h>
int main()
{
char passwd[100],encrypted[100];
int i,j,k,t,move=3;
scanf("%s;",&passwd);
for(i=0; i<strlen(passwd); i++)
{
if(passwd[i] >= 'a' && passwd[i] <= 'z')
{
passwd[i] = ((passwd[i]-'a')+move)%26+'a';
}else if(passwd[i]==';')
{
passwd[i]='\0';
}
}
printf("%s",passwd);
return 0;
}
延伸:
#include <stdio.h>
#include <string.h>
int main()
{
char passwd[100],encrypted[100];
int i,j,k,t,move;
while(1)
{
printf("Enter message to be encrypted:");
gets(passwd);
printf("Enter shift amount(1-25):");
scanf("%d%*c",&move);
for(i=0; i<strlen(passwd); i++)
{
if(passwd[i] >= 'A' && passwd[i] <= 'Z')
{
passwd[i] = ((passwd[i]-'A')+move)%26+'A';
}
else if(passwd[i] >= 'a' && passwd[i] <= 'z')
{
passwd[i] = ((passwd[i]-'a')+move)%26+'a';
}
}
printf("%s",passwd);
printf("\n");
}
return 0;
}
