c#序列化与反序列化数据加密, 使用protobuf-net实现
来源:互联网 发布:单片机移位指令 编辑:程序博客网 时间:2024/06/01 17:05
原文地址:http://blog.csdn.net/donss/article/details/7792306
protobuf-net是Google的ProtocolBuffer的.net实现。ProtocolBuffer是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构。
- public class ProtobufDemo
- {
- static string abcStr = "buvcfgahopqidejwxrstyklmnz";
- /// <summary>
- /// 加密序列化
- /// </summary>
- /// <param name="obj">要序列化的对象</param>
- /// <param name="path">保存路径</param>
- /// <returns></returns>
- public static void GeneralSerialize<T>(T obj, string path)
- {
- using (var fileStream = File.Create(path))
- {
- DESCryptoServiceProvider cryptic = new DESCryptoServiceProvider();
- cryptic.Key = ASCIIEncoding.ASCII.GetBytes(abcStr[6].ToString() + abcStr[0].ToString() + abcStr[17].ToString() + abcStr[10].ToString() + abcStr[20].ToString() + abcStr[8].ToString() + abcStr[4].ToString() + abcStr[12].ToString());
- cryptic.IV = ASCIIEncoding.ASCII.GetBytes(abcStr[16].ToString() + abcStr[10].ToString() + abcStr[7].ToString() + abcStr[1].ToString() + abcStr[2].ToString() + abcStr[18].ToString() + abcStr[14].ToString() + abcStr[21].ToString());
- CryptoStream crStream = new CryptoStream(fileStream, cryptic.CreateEncryptor(), CryptoStreamMode.Write);
- Serializer.Serialize(crStream, myObject);
- crStream.Close();
- fileStream.Close();
- }
- }
- /// <summary>
- /// 反序列化
- /// </summary>
- /// <param name="path">文件路径</param>
- /// <returns></returns>
- public static T GeneralDeserialize<T>(string path)
- {
- T retObj;
- using (var file = File.OpenRead(path))
- {
- DESCryptoServiceProvider cryptic = new DESCryptoServiceProvider();
- cryptic.Key = ASCIIEncoding.ASCII.GetBytes(abcStr[6].ToString() + abcStr[0].ToString() + abcStr[17].ToString() + abcStr[10].ToString() + abcStr[20].ToString() + abcStr[8].ToString() + abcStr[4].ToString() + abcStr[12].ToString());
- cryptic.IV = ASCIIEncoding.ASCII.GetBytes(abcStr[16].ToString() + abcStr[10].ToString() + abcStr[7].ToString() + abcStr[1].ToString() + abcStr[2].ToString() + abcStr[18].ToString() + abcStr[14].ToString() + abcStr[21].ToString());
- CryptoStream crStream = new CryptoStream(file, cryptic.CreateDecryptor(), CryptoStreamMode.Read);
- retObj = Serializer.Deserialize<T>(crStream);
- crStream.Close();
- file.Close();
- }
- return retObj;
- }
- }
- c#序列化与反序列化数据加密, 使用protobuf-net实现
- c#序列化与反序列化通用方法, 使用protobuf-net实现
- C# 使用 protobuf 进行对象序列化与反序列化
- C#使用Protocol Buffer(ProtoBuf)进行对象的序列化与反序列化
- Java数据通讯中使用Google Protobuf实现序列化与反序列化
- Protobuf-net在Unity中的序列化与反序列化
- protobuf-net的序列化与反序列化(本地存储)
- Lua 中实现 protobuf 序列化,反序列化
- Lua 中实现 protobuf 序列化,反序列化
- protobuf 的序列化与反序列化
- protobuf的序列化与反序列化
- .net c# 序列化和反序列
- net c# 序列化和反序列
- .net c# 序列化和反序列
- .net c# 序列化和反序列
- .net c# 序列化和反序列
- .net c# 序列化和反序列
- .net c# 序列化和反序列
- windows下进程间通信方式介绍
- 开机启动
- C# 获取时间戳
- Centos环境下部署游戏服务器-SVN
- iPhone开发之退出应用程序
- c#序列化与反序列化数据加密, 使用protobuf-net实现
- Git的使用
- KMS
- cocos2d-x2.1.5中实现手势识别(各种形状,单击,双击)
- uva 10465 - Homer Simpson(贪心+完全背包)
- 动态链接库的编写和使用
- python 之 分割参数getopt
- 东方程序员怎么看西方程序员
- 原本好好的程序,怎么电脑重启后就打不开了?