在本實例中要求設計一個加密和解密算法。在對一個指定的字符串加密之后,利用解密函數能夠對密文解密,顯示明文信息。
加密的方式是將字符串中每個字符加上它在字符串中的位置和一個偏移值 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++編程學習交流俱樂部【點擊進入】
問題答疑,學習交流,技術探討,還有超多編程資源大全,零基礎的視頻也超棒~