aes加解密

  1. public class AesCryptto
  2. {
  3. private string key = "hjyf57468jhmuist";
  4. private string iv = "ud547io0d98eddl2d";
  5.  
  6. /// <summary>
  7. /// aes加密
  8. /// </summary>
  9. /// <param name="str"></param>
  10. /// <returns></returns>
  11. public string Encrpty(string str)
  12. {
  13. try
  14. {
  15. AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
  16. aes.Key = Encoding.UTF8.GetBytes(key);
  17. aes.IV = Encoding.UTF8.GetBytes(iv);
  18. aes.Mode = CipherMode.CBC;
  19. aes.Padding = PaddingMode.Zeros;
  20.  
  21. MemoryStream memory = new MemoryStream();
  22.  
  23. using (CryptoStream stream = new CryptoStream(memory, aes.CreateEncryptor(), CryptoStreamMode.Write))
  24. {
  25. byte[] buffer = Encoding.UTF8.GetBytes(str);
  26. stream.Write(buffer, , buffer.Length);
  27. stream.FlushFinalBlock();
  28. }
  29.  
  30. string result = Convert.ToBase64String(memory.ToArray());
  31.  
  32. //对url参数进行编码,会把"/"等转码
  33. result = Uri.EscapeDataString(result);
  34.  
  35. //对url地址进行编码,不会对"/"编码,对空格和中文编码
  36. //result = Uri.EscapeDataString(result);
  37.  
  38. return result;
  39. }
  40. catch
  41. {
  42. return str;
  43. }
  44. }
  45.  
  46. /// <summary>
  47. /// aes解密
  48. /// </summary>
  49. /// <param name="str"></param>
  50. /// <returns></returns>
  51. public string DeEncrpty(string str)
  52. {
  53. try
  54. {
  55. AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
  56. aes.Key = Encoding.UTF8.GetBytes(key);
  57. aes.IV = Encoding.UTF8.GetBytes(iv);
  58. aes.Mode = CipherMode.CBC;
  59. aes.Padding = PaddingMode.Zeros;
  60.  
  61. str = Uri.UnescapeDataString(str);
  62. byte[] buffer = Convert.FromBase64String(str);
  63. MemoryStream memory = new MemoryStream(buffer);
  64.  
  65. using (CryptoStream stream = new CryptoStream(memory, aes.CreateDecryptor(), CryptoStreamMode.Write))
  66. {
  67. stream.Write(buffer, , buffer.Length);
  68. stream.FlushFinalBlock();
  69.  
  70. }
  71.  
  72. return Encoding.UTF8.GetString(memory.ToArray());
  73. }
  74. catch
  75. {
  76. return str;
  77. }
  78. }
  79. }

对象序列化

  1. public class SerializeHelper
  2. {
  3. /// <summary>
  4. /// 把对象序列化为字符串
  5. /// </summary>
  6. /// <param name="user"></param>
  7. /// <returns></returns>
  8. public string Serialize<T>(T entity)
  9. {
  10. try
  11. {
  12. BinaryFormatter formatter = new BinaryFormatter();
  13.  
  14. MemoryStream memory = new MemoryStream();
  15.  
  16. formatter.Serialize(memory, entity);
  17.  
  18. return Encoding.Default.GetString(memory.ToArray());
  19. }
  20. catch
  21. {
  22. return "";
  23. }
  24. }
  25.  
  26. /// <summary>
  27. /// 将序列化后的字符串反序列化为对象
  28. /// </summary>
  29. /// <param name="str"></param>
  30. /// <returns></returns>
  31. public T DeSerialize<T>(string str)
  32. {
  33. try
  34. {
  35. BinaryFormatter formatter = new BinaryFormatter();
  36. MemoryStream memory = new MemoryStream(Encoding.Default.GetBytes(str));
  37.  
  38. return (T)formatter.Deserialize(memory);
  39. }
  40. catch
  41. {
  42. return default(T);
  43. }
  44. }
  45. }

对象序列化时,必须在类前面加上[Serializable()],想让某个字段不可序列化时,需要在该字段前加上[NonSerialized()],对属性无效。

  1. [Serializable()]
  2. public class User
  3. {
  4. public string LoginName { get; set; }
  5.  
  6. public string Password { get; set; }
  7.  
  8. [NonSerialized()]
  9. private DateTime regTime;
  10.  
  11. public DateTime RegTime
  12. {
  13. get { return regTime; }
  14. set { regTime = value; }
  15. }
  16. }

这两个功能一起使用时可以用来在cookie中存储登陆信息等。

c# Aes加解密和对象序列化的更多相关文章

  1. 数据採集器服务——Socket(今天才发现AES加解密代码跟贴的时候不一样,貌似乱码,不知什么情况)

    近期刚做的一个项目.关于 Socket TCP 通信. 需求方提供了一个 ARM 机器,及数据採集器,须要我做一个服务端与数据採集器进行交互. 目的: 数据採集器:定时将读取到的数据发送到服务端. 服 ...

  2. java AES加解密

    AES加解密工具类 package com.yan.demo; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64D ...

  3. RSA,AES加解密算法的实现

    目录 Python实现RSA公钥加密算法 RSA公钥加密算法原理 RSA算法的Python实现 AES加解密算法实现 AES加解密算法原理 AES加解密算法Python实现 参考文献 Python实现 ...

  4. aes加解密前后端-后台

    一.web.xml: <filter> <filter-name>fastLoginFilter</filter-name> <filter-class> ...

  5. DES,AeS加解密,MD5,SHA加密

    1.DES一共就有4个参数参与运作:明文.密文.密钥.向量.其中这4者的关系可以理解为: 密文=明文+密钥+向量: 明文=密文-密钥-向量: 为什么要向量这个参数呢?因为如果有一篇文章,有几个词重复, ...

  6. Java、C#双语版配套AES加解密示例

      这年头找个正经能用的东西那是真难,网上一搜索一大堆,正经能用的没几个,得,最后还是得靠自己,正巧遇上需要AES加解密的地方了,而且还是Java和C#间的相互加解密操作,这里做个备忘 这里采用的加解 ...

  7. AES加解密算法Qt实现

    [声明] (1) 本文源码 在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能.在此表示感谢!该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 除图1外 ...

  8. aes加解密 Illegal key size

    做aes加密时,发生一个奇怪的错误,在本地环境是好的,发布到测试环境就出问题, java.security.InvalidKeyException: Illegal key size 想到本地环境之前 ...

  9. C# RSA加解密与验签,AES加解密,以及与JAVA平台的密文加解密

    前言: RSA算法是利用公钥与密钥对数据进行加密验证的一种算法.一般是拿私钥对数据进行签名,公钥发给友商,将数据及签名一同发给友商,友商利用公钥对签名进行验证.也可以使用公钥对数据加密,然后用私钥对数 ...

随机推荐

  1. DB9 公头母头引脚定义及连接

    1.实物及引脚简单介绍 在做开发的时候常常会用到串行接口,一般9针的串行接口居多.例如以下图所看到的: 公头母头用于连接线的採用上图封装.但用于开发板的时候採用90度弯角插针的封装.例如以下图: 各引 ...

  2. Delphi2010下的FillChar

    在delphi2010中,因为unicode的原因,FillChar使用方法已经和老版delphi大不相同了. 如果想用某一个字符(或汉字)填充内存 buf: array[0..1023] of Ch ...

  3. 进程间通信之XSI IPC

    XSI IPC源自于系统V的IPC功能. 有三种IPC我们称作XSI IPC,即消息队列.信号量以及共享存储器,它们之间有很多相似之处. 1.标识符和键 每个内核中的IPC结构(消息队列.信号量或共享 ...

  4. win7 下 qwt安装教程

    一.安装:qwt的安装很简单,可以参看它的install文档.1.解开下载下来的zip文件,比如解开到d:\qt\qwt-5.0.2目录下,修改目录下的qwtconfig.pri文件里面的安装路径,比 ...

  5. Expectation Maximization and GMM

    Jensen不等式 Jensen不等式给出了积分的凸函数值必定大于凸函数(convex)的积分值的定理.在凸函数曲线上的任意两点间连接一条线段,那么线段会位于曲线之上,这就是将Jensen不等式应用到 ...

  6. Java_eclipse软件与git配合使用创建git仓库

    一.在eclipse上安装git,和安装其他插件一样 help->Install new software->add... 在弹出框中输入name,location;点击-->ok ...

  7. 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 提供程序解决办法

    ---恢复内容开始--- 最近在用c#写一个处理excel的软件,连接excel的时候出现一个问题未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 提供程序,究其原因是我的电脑是 ...

  8. Destroying the bus stations

    Destroying the bus stations Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1832   Acce ...

  9. G - Just a Hook

    Description In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of t ...

  10. 产品设计原则之移动APP【转】

    随着移动互联网的发展,越来越多的Web产品开始布局移动端,因此最近经常碰到PM们在交流讨论移动APP产品的设计.我从事移动互联网已经有一年多了,通过不断的学习和实践也积累了一些心得,今天整理并分享一下 ...