• 简单的加密解密处理


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

    内容大致如下:

    您好!之前您写的那个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:告诉我你叫什么名字?
    B:我叫墨
    A:你的梦想是什么呢?!@#¥%……&*()——+
    B:建造一套完备的智能集群监控系统,规则自动内建、程序自我编程、自我热替换  :"?><=-
    A:(白眼 这人神经病了)呵呵,谢谢你的回答
    ";
    15 
    16             Console.WriteLine("原字符串 --> {0}
    ", sendMsg);
    17 
    18             Console.WriteLine("开始加密");
    19             byte[] buffer = Encrypt(sendMsg);
    20             Console.WriteLine("加密完成
    ");
    21 
    22             Console.WriteLine("开始解密");
    23             string decMsg = Decrypt(buffer);
    24             Console.WriteLine("解密完成
    ");
    25 
    26             Console.WriteLine("解密字符串 --> {0}
    ", 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

  • 相关阅读:
    二分法检索数组
    Linux安装CDH
    myeclipse操作hdfs
    Linux安装hbase
    Linux安装zookeeper
    Linux安装msql
    fluem全分布环境搭建
    bash: jps: 未找到命令...
    自动化项目Jenkins持续集成
    linux卸载mysql====安装新的虚拟机 自带的基本都要卸载!? mysql tomcat java Python可以不用卸载
  • 原文地址:https://www.cnblogs.com/preacher/p/6840447.html
Copyright © 2020-2023  润新知