前言:當今社會是一個信息社會,你的我的信息和聊天記錄極有可能被別有用心的人時時刻刻監視着,那麼你想不想實現專屬於兩我的或一個小圈子的人在社交軟件上的交流不被任何其餘人讀懂呢?下面就給你們提供一個原理極其簡單程序極其容易實現的C語言文字加密小程序的實現算法。算法
原理:ASCLL碼的加減乘除運算。舉一個最簡單的例子,從鍵盤輸入一行字符"LANGUAGE",將全部字符的ASCLL碼加1後再打印出來就變成了"MBOHVBHF",將全部字符的ASCLL碼加2,則打印出來是"NCPIWCIG",試問從打印出來的字符串的字裏行間誰還能夠一眼就看出最初想要傳達的信息是"LANGUAGE"?同理,將加密文字全部字符的ASCLL碼減1再打印出來就能夠實現對加密文字的翻譯,例如將"MBOHVBHF"中每一個字符的ASCLL碼都減1再打印出來就能夠還原出"LANGUAGE"。小程序
若是你足夠聰明,能夠看出"MBOHVBHF"是"LANGUAGE"中的全部字母在英文字母表裏的順序後移一位造成的、"NCPIWCIG"是"LANGUAGE"中的全部字母在英文字母表中的順序後移兩位造成的,那麼請你們再來看一下漢字的狀況。函數
我在鍵盤上錄入了"今天晚上我不回家吃飯了",將這串字符的ASCLL碼所有加1,打印出來是這樣的"掘晚晤市嫌臣假接湊負綠"。怎麼樣,哈哈哈,是否是看完後丈二和尚摸不着頭腦?因此,用這種算法實現對漢字的加密和翻譯絕對隱蔽!漢字在計算機中的編碼比較複雜,一個漢字在Windows 10系統下的CodeBlocks編譯器裏佔2個字符的位置,我記得我有作過測試,在Cent OS Linux系統下佔3個字符的位置。然而無論一個漢字佔幾個字符的位置,對每一個字符的ASCLL碼作加減乘除的運算和逆運算就能夠實現對文字的加密和翻譯。測試
下面向你們展現一下源代碼(加密算法爲將全部字符的ASCLL碼加1,翻譯算法爲將全部字符的ASCLL碼減1):編碼
頭文件部分:加密
//Trans.h #ifndef TRANS_H_INCLUDED #define TRANS_H_INCLUDED #include <stdio.h> #include <stdlib.h> #include <string.h> void creat(char txt[]) { for(int i=0;i<strlen(txt);i++) { txt[i]+=1; } printf("生成的加密文字爲:%s\n",txt); } void trans(char txt[]) { for(int i=0;i<strlen(txt);i++) { txt[i]-=1; } printf("解密後文字爲:%s\n",txt); } #endif // TRANS_H_INCLUDED 主函數部分: #include "Trans.h" void main() { char txt[1024]; int choice; printf("---------------歡迎使用譯碼機!---------------\n"); printf("****************************************************\n"); printf("生成加密文字請輸入1 翻譯加密文字泣請輸入2\n"); printf("退出程序請輸入0\n"); while(1) { printf("****************************************************\n"); printf("請輸入您的選擇:"); scanf("%d",&choice); fflush(stdin); switch(choice) { case 1: printf("請輸入文字:"); gets(txt); creat(txt); break; case 2: printf("請輸入加密文字:"); gets(txt); trans(txt); break; case 0: printf("退出成功!\n"); exit(0); default: printf("您的輸入有誤,請從新輸入!\n"); } system("pause"); } }
下面向你們展現一下加密與翻譯的效果:spa
思考與提升:僅僅將全部字符的ASCLL碼加1就實現對文字信息的加密了,會不會很容易被破譯呢?請恕博主我不是密碼學專家,這一點我沒法回答,可是直觀感受這樣加密確實有點簡單。那麼咱們就能夠對字符進行多種更爲複雜的處理,好比給全部字符加上一個正負變換的數列、給全部字符加上斐波那契數列等。總之,直觀感受就是越複雜越不容易被破譯。翻譯
下面向你們展現一下給全部字符加上一個正負變換的數列的加密算法的源代碼:調試
頭文件部分:code
//Trans.h #ifndef TRANS_H_INCLUDED #define TRANS_H_INCLUDED #include <stdio.h> #include <stdlib.h> #include <string.h> void creat(char txt[]) { int f=1; for(int i=0;i<strlen(txt);i++) { txt[i]+=f; f=-f; } printf("生成的加密文字爲:%s\n",txt); } void trans(char txt[]) { int f=-1; for(int i=0;i<strlen(txt);i++) { txt[i]+=f; f=-f; } printf("解密後文字爲:%s\n",txt); } #endif // TRANS_H_INCLUDED
主函數部分主要是用來調試的,與上面那個簡單加密算法的主函數部分相同。
下面向你們展現一下使用這種複雜加密算法加密與翻譯的效果: