简单的加密解密处理

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

内容大致如下:

您好!之前您写的那个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 }
时间: 2024-11-13 21:38:01

简单的加密解密处理的相关文章

最简单的加密解密算法

1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace WindowsFormsApplication1 11 { 12 pu

PHP 简单的加密解密方法

本算法的基础:给定字符A B,A^B=C,C^B=A,即两次异或运算可得到原字符.实现代码如下: /** * @desc加密 * @param string $str 待加密字符串 * @param string $key 密钥 * @return string */ function encrypt($str, $key){ $mixStr = md5(date('Y-m-d H:i:s').rand(1000)); $tmp = ''; $strLen = strlen($str); for

python的文字和unicode/ascll 相互转换函数,和简单的加密解密。。。

1 import re 2 import random 3 4 5 # ord() 它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值 6 # chr() 是见数字变成汉字 7 8 9 #函数功能:将输入的字符串加密 10 #加密方式,将字变成Unicode 数值,然后加上一个随机数,然后再变成汉字,再在汉字后面加上这个数字,组成加密后的密文 11 #返回值:加密后的密文 12 # 13 def enc(s): 14 ret = '' 15 for

Java简单的加密解密算法,使用异或运算

package cn.std.util; import java.nio.charset.Charset; public class DeEnCode { private static final String key0 = "FECOI()*&<MNCXZPKL"; private static final Charset charset = Charset.forName("UTF-8"); private static byte[] keyByt

RSA加密解密及RSA加签验签

RSA安全性应用场景说明 在刚接触RSA的时候,会混淆RSA加密解密和RSA加签验签的概念.简单来说加密解密是公钥加密私钥解密,持有公钥(多人持有)可以对数据加密,但是只有持有私钥(一人持有)才可以解密并查看数据:加签验签是私钥加签公钥验签,持有私钥(一人持有)可以加签,持有公钥(多人持有)可以验签. 在金融行业在设计到数据交互传输的时候,需要考虑数据的安全性问题.下文通过介绍RSA的加密和加签两个特性,说明RSA加密技术在保障数据传输过程中的安全性以及实现数据的防篡改和防否机制的应用场景及代码

使用X.509数字证书加密解密实务(三)-- 使用RSA证书结合对称加密技术加密长数据

本文全部源代码下载:/Files/chnking/EncryptLongData.rar 一.  使用证书结合对称加密算法加.解密长数据 上一章节讨论了如何使用RSA证书加密数据,文中提到:“Dotnet的RSA实现有个特点,它必须要在明文中添加一些随机数,所以明文不能把128字节占满,实际测试,明文最多为117字节,留下的空间用来填充随机数”.也就是说对于1024位密钥的RSA来说,一次只能加密128字节的数据,对于Dotnet的RSA实现更是只能加密117个字节的数据. 这就引出一个问题,超

JS_七种JAVASCRIPT加密/解密方法

本文一共介绍了七种JAVASCRIPT加密方法. 一:最简单的加密解密 二:转义字符的妙用 三:使用Microsoft出品的脚本编码器Script Encoder来进行编码 (自创简单解码) 四:任意添加NUL空字符(十六进制00H) (自创) 五:无用内容混乱以及换行空格TAB大法 六:自写解密函数法 七:错误的利用 在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的JAVASCRIPT代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己写点东西

JavaScript加密解密7种方法总结分析

原文地址:http://wenku.baidu.com/view/9048edee9e31433239689357.html 本文一共介绍了七种javascript加密方法: 在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的javascript代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己写点东西也挺累的......^*^ 但我们也应该清楚地认识到因为javascript代码是在IE中解释执行,要想绝对的保密是不可能的,我们要做的就是尽可能

JAVASCRIPT加密方法,JS加密解密综述(7种)

一:最简单的加密解密 对于JAVASCRIPT函数escape()和unescape()想必是比较了解啦(很多网页加密在用它们),分别是编码和解码字符串,比如例子代码 用escape()函数加密后变为如下格式: alert%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B 如何?还看的懂吗?当然其中的ASCII字符"alert"并没有被加密,如果愿意我们可以写点JAVASCRIPT代码重新把它加密如下: %61%6C%65%72%74%28%22%u9ED1