簡單的加密解密處理


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

 

內容大致如下:

您好!之前您寫的那個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 }

 

我的測試程序:

MMSClient(新).7z     http://pan.baidu.com/s/1dFKijPf


免責聲明!

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



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