C語言:凱撒密碼的實現


凱撒密碼的實現(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;
}

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM