1. 程式人生 > >簡單的加密解密處理

簡單的加密解密處理

length stat end socket通訊 上一個 規則 alt cnblogs 字符

  今天一位小朋友通過郵箱向我發送一封求助信息。

內容大致如下:

您好!之前您寫的那個C#客戶端服務器程序運行成功,但能不能加上一個加密解密的函數,老師要求客戶端/服務器模式,可以在局域網內傳送字符文本消息,要求不能使用明文,有成對的加密/解密處理.您能幫我解決一下嗎?謝謝

他問的這個C#客戶端我還真的忘記是什麽了,後來看了看才明白是我之前做過的一個Socket通訊測試。

其實加密解密原理算是比較簡單的,只要把簡單原理用復雜結構支撐,那麽這種加密就是無法破解,我先展示一下加碼前後的效果

技術分享

我的加密解密過程非常簡單,如果對加密解密不懂的同學,可以用這篇來理解加密和解密過程

提示一下,我的加密就是按照每字節(byte) +7;這個加密過程可以用復雜函數方程表示,但是要確保函數方程在有效範圍內(byte : 0~255)不能出現多解的情況,函數方程求解要確保唯一性。

代碼奉送:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.IO;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 
 8 namespace StreamTest
 9 {
10     class Program
11     {
12         static void Main(string[] args)
13         {
14             string sendMsg = "
A:告訴我你叫什麽名字?\nB:我叫墨\nA:你的夢想是什麽呢?!@#¥%……&*()——+\nB:建造一套完備的智能集群監控系統,規則自動內建、程序自我編程、自我熱替換 :\"?><=-\nA:(白眼 這人神經病了)呵呵,謝謝你的回答\n"; 15 16 Console.WriteLine("原字符串 --> {0}\n", sendMsg); 17 18 Console.WriteLine("開始加密"); 19 byte[] buffer = Encrypt(sendMsg); 20 Console.WriteLine("
加密完成\n"); 21 22 Console.WriteLine("開始解密"); 23 string decMsg = Decrypt(buffer); 24 Console.WriteLine("解密完成\n"); 25 26 Console.WriteLine("解密字符串 --> {0}\n", decMsg); 27 28 Console.ReadKey(); 29 } 30 /// <summary> 31 /// 加密 32 /// </summary> 33 /// <param name="send"></param> 34 /// <returns></returns> 35 private static byte[] Encrypt(string send) 36 { 37 byte[] buffer = System.Text.Encoding.UTF8.GetBytes(send); 38 int len = buffer.Length; 39 for (int i = 0; i < len; i++) 40 { 41 buffer[i] = (byte)(~((buffer[i] + 7) % 256)); 42 } 43 return buffer; 44 } 45 /// <summary> 46 /// 解密 47 /// </summary> 48 /// <param name="buffer"></param> 49 /// <returns></returns> 50 private static string Decrypt(byte[] buffer) 51 { 52 int len = buffer.Length; 53 for (int i = 0; i < len; i++) 54 { 55 buffer[i] = (byte)((~buffer[i] - 7)%256); 56 } 57 return System.Text.Encoding.UTF8.GetString(buffer); 58 } 59 } 60 }

簡單的加密解密處理