Unity3d 使用 RSA和DES 加密网络数据包
来源:互联网 发布:j2直播软件 编辑:程序博客网 时间:2024/06/06 20:37
在同事的指导下,明白了网络加密的缘由以及手法。
在网络通讯中,如果数据不进行加密,那么这些数据都是透明的 。
就相当于你去寄信,但是这封信居然没有用信封装起来,这样邮局的任何一个人都可以拿过来看信的内容,毫无安全性可言。
电脑中发送出去的每个数据包,都要在交换机 路由器上通过。
如果你发送一个登陆网站的请求,而这个请求没有加密,那么在路由器上能明明白白的看到你的帐号密码。
最简单的测试方式:在电脑上安装WireShark,然后让手机连上电脑发出去的Wifi,在WireShark中能看到手机发送的所有数据。
现有的加密分为 对称加密和非堆成加密。
对称加密:客户端和服务端 使用相同的密钥,加密速度很快,比如 DES 。
非对称加密:客户端和服务端使用 不相同的密钥,加密速度非常慢。比如 RSA 。
转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn
一般项目中的加密流程如下
C#库 中为我们提供了RSA和DES加密的API,下面分别来看。
/************************** * 文件名:UEncrypt.cs; * 文件描述:RSA加密 解密; * 创建日期:2016/05/29; * Author:ThisisGame; * Page:https://github.com/ThisisGame/UEncrypt.git ***************************/using System.IO;using System.Text;using System.Security.Cryptography;namespace ThisisGame.UEncrypt{ public class UEncrypt { /// <summary> /// 生成RSA私钥 公钥 /// </summary> /// <param name="privateKey"></param> /// <param name="publicKey"></param> public static void RSAGenerateKey(ref string privateKey, ref string publicKey) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); privateKey = rsa.ToXmlString(true); publicKey = rsa.ToXmlString(false); } /// <summary> /// 用RSA公钥 加密 /// </summary> /// <param name="data"></param> /// <param name="publicKey"></param> /// <returns></returns> public static byte[] RSAEncrypt(byte[] data, string publicKey) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(publicKey); byte[] encryptData = rsa.Encrypt(data, false); return encryptData; } /// <summary> /// 用RSA私钥 解密 /// </summary> /// <param name="data"></param> /// <param name="privateKey"></param> /// <returns></returns> public static byte[] RSADecrypt(byte[] data, string privateKey) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(privateKey); byte[] decryptData = rsa.Decrypt(data, false); return decryptData; } /// <summary> /// DES加密 /// </summary> /// <param name="data">源数据</param> /// <param name="desrgbKey"></param> /// <param name="desrgbIV"></param> /// <returns></returns> public static byte[] DESEncrypt(byte[] data,byte[] desrgbKey,byte[] desrgbIV) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); MemoryStream memoryStream = new MemoryStream(); CryptoStream cryptoStream = new CryptoStream(memoryStream, des.CreateEncryptor(desrgbKey, desrgbIV), CryptoStreamMode.Write); cryptoStream.Write(data, 0, data.Length); cryptoStream.FlushFinalBlock(); return memoryStream.ToArray(); } /// <summary> /// DES解密 /// </summary> /// <param name="data">源数据</param> /// <param name="desrgbKey"></param> /// <param name="desrgbIV"></param> /// <returns></returns> public static byte[] DESDecrypt(byte[] data, byte[] desrgbKey, byte[] desrgbIV) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); MemoryStream memoryStream = new MemoryStream(); CryptoStream cryptoStream = new CryptoStream(memoryStream, des.CreateDecryptor(desrgbKey, desrgbIV), CryptoStreamMode.Write); cryptoStream.Write(data, 0, data.Length); cryptoStream.FlushFinalBlock(); return memoryStream.ToArray(); } }}
测试工程下载:
https://github.com/ThisisGame/UEncrypt
Github 求Star
0 0
- Unity3d 使用 RSA和DES 加密网络数据包
- Unity3d 使用 RSA和DES 加密网络数据包
- 使用DES和RSA做数据加密
- 加密和解密 DES RSA
- DES和RSA加密解密实例
- RSA加密和3DES加解密
- 通过RSA和DES实现网络报文加密加签(实例)
- DES对称加密技术和RSA非对称加密技术
- 常用加密解密算法【RSA、AES、DES、MD5】介绍和使用
- 常用加密解密算法【RSA、AES、DES、MD5】介绍和使用
- C/C++使用openssl进行摘要和加密解密(md5, sha256, des, rsa)
- C/C++使用openssl进行摘要和加密解密(md5, sha256, des, rsa)
- C/C++使用openssl进行摘要和加密解密(md5, sha256, des, rsa)
- 常用加密解密算法【RSA、AES、DES、MD5】介绍和使用
- RSA - 与DES结合使用实现动态加密
- RSA - 与DES结合使用实现动态加密
- Android加密DES AES RSA的简单使用
- 基于RSA和DES双重加密的可靠通信
- Android 消息循环机制之ThreadLocal 类详解
- 常见的块状元素与内联元素
- Python类属性或实例属性的类型限制
- Python的100道经典算法题(1)
- zoj 2340 Little Jumper(三分 物理好题)
- Unity3d 使用 RSA和DES 加密网络数据包
- Java网络编程
- HTML——边用边学
- 【MongoDB】window环境下MongoDB64位安装
- CSS3 Transition
- 关系型数据库
- 习题7-7 Egyptian Fractions (HARD version) 埃及分数 (IDA*)
- java笔记之重写,抽象
- 集合框架