1. 程式人生 > 其它 >【程式設計入門】C語言字串的加密和解密演算法!

【程式設計入門】C語言字串的加密和解密演算法!

技術標籤:C/C++進階學習c語言字串加密解密演算法C語言入門

在本例項中要求設計一個加密和解密演算法。在對一個指定的字串加密之後,利用解密函式能夠對密文解密,顯示明文資訊。

加密的方式是將字串中每個字元加上它在字串中的位置和一個偏移值 5。以字串“mrsoft”為例,第一個字元“m”在字串中的位置為 0,那麼它對應的密文是“'m'+0+5",即 r。

演算法思想

在 main() 函式中使用 while 語句設計一個無限迴圈,並定義兩個字元陣列,用來儲存,明文和密文字串,在首次迴圈中要求使用者輸入字串,進行將明文加密成密文的操作, 之後的操作則是根據使用者輸入的命令字元進行判斷,輸入 1 加密新的明文,輸入 2 對剛加密的密文進行解密,輸入 3 退出系統。

程式程式碼

#include <stdio.h>

#include <string.h>

int main()

{

  int result=1;

  int i;

  int count=0;

  char Text[128]={'\0'};

  char cryptograph[128]={'\0'};

  while(1)

  {

    if(result==1)

    {

      printf("請輸入要加密的明文:\n");

      scanf ("%s",&Text);

      count=strlen(Text);

      for(i=0;i<count;i++)

      {

        cryptograph[i]=Text[i]+i+5;

      }

      cryptograph[i]='\0';

      printf("加密後的密文是:%s\n",cryptograph);

    }

    else if(result==2)

    {

      count=strlen(Text);

      for(i=0;i<count;i++)

      {

        Text[i]=cryptograph[i]-i-5;

      }

      Text[i]='\0';

      printf("解密後的明文是:%s\n",Text);

    }

    else if(result==3)

    {

      break;

    }

    else

    {

      printf("請輸入正確的命令符:\n");

    }

    printf("輸入1加密新的明文,輸入2對剛加密的密文進行解密,輸入3退出系統:\n");

    printf("請輸入命令符:\n");

    scanf("%d",&result);

  }

  return 0;

}

除錯執行結果

本例項中,輸入了 I love Xichang College 字串作為例證,因此輸出是多個加密後的字串,結果如下所示:


請輸入要加密的明文:

I Love Xichang College

加密後的密文是:N

輸入1加密新的明文,輸入2對剛加密的密文進行解密,輸入3退出系統:

請輸入命令符:

請輸入要加密的明文:

加密後的密文是:Qu}m

輸入1加密新的明文,輸入2對剛加密的密文進行解密,輸入3退出系統:

請輸入命令符:

請輸入要加密的明文:

加密後的密文是:]ojpjxr

輸入1加密新的明文,輸入2對剛加密的密文進行解密,輸入3退出系統:

請輸入命令符:

請輸入要加密的明文:

加密後的密文是:Hustnqp

輸入1加密新的明文,輸入2對剛加密的密文進行解密,輸入3退出系統:

請輸入命令符:

總結

字串的加密和解密方法一直被廣泛應用,最常見的無非是MD5 雜湊函式

本例項中的演算法比較簡單,只是在原值基礎上相加對應值即可。MD5 略微複雜,是為了確保資訊傳輸完整、一致而設計的雜湊演算法之一,是雜湊演算法的基本原理。

最後,不管你是轉行也好,初學也罷,進階也可,如果你想學程式設計~

【值得關注】我的 C/C++程式設計學習交流俱樂部【點選進入】

問題答疑,學習交流,技術探討,還有超多程式設計資源大全,零基礎的視訊也超棒~