自制新型文字密碼,聊天記錄的畫風都不一樣了,再也不怕被女朋友偷窺手機了!


前言:當今社會是一個信息社會,你的個人信息和聊天記錄極有可能被別有用心的人時時刻刻監視着,那么你想不想實現專屬於兩個人或一個小圈子的人在社交軟件上的交流不被任何其他人讀懂呢?下面就給大家提供一個原理極其簡單程序極其容易實現的C語言文字加密小程序的實現算法。

PS:文章末尾有驚喜哦!

原理: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");

  }

}

 

下面向大家展示一下加密與翻譯的效果:


 

思考與提高:僅僅將所有字符的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[])

{

  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

 

主函數部分主要是用來調試的,與上面那個簡單加密算法的主函數部分相同。

————————

看到這里你是不是對“Linux”又有了一點新的認知呢~

如果你喜歡這篇文章的話,動動小指,點個贊再走~

如果你想學編程,小編推薦一個編程學習俱樂部【點擊進入】!


 

一個活躍、高逼格、高層次的編程學習殿堂;編程入門只是順帶,思維的提高才有價值!

涉及:編程入門、游戲編程、網絡編程、Windows編程、Linux編程、Qt界面開發、黑客等等....

下面向大家展示一下使用這種復雜加密算法加密與翻譯的效果:


 

用了加密程序后,畫風是這樣的:


 

 


免責聲明!

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



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