简单的加密解密处理

  今天一位小朋友通过邮箱向我发送一封求助信息。

 

内容大致如下:

您好!之前您写的那个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

posted @ 2017-05-11 13:02  牧师/preacher  阅读(3568)  评论(3编辑  收藏  举报