aes加解密

public class AesCryptto
{
private string key = "hjyf57468jhmuist";
private string iv = "ud547io0d98eddl2d"; /// <summary>
/// aes加密
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public string Encrpty(string str)
{
try
{
AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = Encoding.UTF8.GetBytes(iv);
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.Zeros; MemoryStream memory = new MemoryStream(); using (CryptoStream stream = new CryptoStream(memory, aes.CreateEncryptor(), CryptoStreamMode.Write))
{
byte[] buffer = Encoding.UTF8.GetBytes(str);
stream.Write(buffer, , buffer.Length);
stream.FlushFinalBlock();
} string result = Convert.ToBase64String(memory.ToArray()); //对url参数进行编码,会把"/"等转码
result = Uri.EscapeDataString(result); //对url地址进行编码,不会对"/"编码,对空格和中文编码
//result = Uri.EscapeDataString(result); return result;
}
catch
{
return str;
}
} /// <summary>
/// aes解密
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public string DeEncrpty(string str)
{
try
{
AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = Encoding.UTF8.GetBytes(iv);
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.Zeros; str = Uri.UnescapeDataString(str);
byte[] buffer = Convert.FromBase64String(str);
MemoryStream memory = new MemoryStream(buffer); using (CryptoStream stream = new CryptoStream(memory, aes.CreateDecryptor(), CryptoStreamMode.Write))
{
stream.Write(buffer, , buffer.Length);
stream.FlushFinalBlock(); } return Encoding.UTF8.GetString(memory.ToArray());
}
catch
{
return str;
}
}
}

对象序列化

public class SerializeHelper
{
/// <summary>
/// 把对象序列化为字符串
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
public string Serialize<T>(T entity)
{
try
{
BinaryFormatter formatter = new BinaryFormatter(); MemoryStream memory = new MemoryStream(); formatter.Serialize(memory, entity); return Encoding.Default.GetString(memory.ToArray());
}
catch
{
return "";
}
} /// <summary>
/// 将序列化后的字符串反序列化为对象
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public T DeSerialize<T>(string str)
{
try
{
BinaryFormatter formatter = new BinaryFormatter();
MemoryStream memory = new MemoryStream(Encoding.Default.GetBytes(str)); return (T)formatter.Deserialize(memory);
}
catch
{
return default(T);
}
}
}

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

[Serializable()]
public class User
{
public string LoginName { get; set; } public string Password { get; set; } [NonSerialized()]
private DateTime regTime; public DateTime RegTime
{
get { return regTime; }
set { regTime = value; }
}
}

这两个功能一起使用时可以用来在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. Android播播放完SD卡指定文件夹音乐之后,自动播放下一首

    最近做一个项目,需要连续播放音乐,播放完一首歌之后,自动播放完下一首歌.不要重复播放. 代码如下: package com.example.asyncplayer_ex; import java.io ...

  2. 修改mac os分辨率(VMware)

    转自:http://hi.baidu.com/hehonglei123/item/55591c17e7991d582a3e22a1 1. 在Mac系统中安装VMsvga2:VMsvga2_v1.2.3 ...

  3. Particle Editor 无法启动此程序,因为计算机中丢失MSCP110.dll。尝试重新安装该程序以解决此问题。

    昨天下载了一个Particle Editor V2.1,打开时显示下面错误 网上百度了也不知是什么原因,回到家在另一台电脑上打开就行了,很奇怪... 两台电脑vs一台是vs2010,家里的一台是vs2 ...

  4. mysql高效获取两张表共同字段的交集数据

    例如下面两站表A,B.A表和B表分别有5-10w数据.A表结构如下:id bid name title publisher extraB表结构如下id bid name title publisher ...

  5. Windows 7中使用Eclipse 使用CDT and WinGW 开发C/C++(转载)

    以前使用visual studio 2010编写C/C++,后来接触了Eclipse后,据说eclipse也可以编写C/C++,以前觉得Visual studio 2010还蛮不错的,也没有多大好奇心 ...

  6. BootStrap2学习日记13----关于按钮

    普通按钮 代码: <div style="margin-bottom:15px"> <a href="#" class="" ...

  7. C#文件操作系列(一)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  8. Android进阶笔记05:View、SurfaceView 和GLSurfaceView 的关系和区别

    1.  Android游戏当中主要的除了控制类外就是显示类View.SurfaceView是从View基类中派生出来的显示类.android游戏开发中常用的三种视图是:    (1) view.Sur ...

  9. 运用CMD命令关于快速获取文件夹名称和快速建立文件夹

    前些天头儿让我建立一本本的文件夹,让后交给我了几个命令,快速获取文件夹的名称和快速建立文件夹,省去了一个个的按F2,一个个的复制,粘贴,一个个的新建,再复制粘贴. 首先讲一下第一个问题,快速获取文件夹 ...

  10. 汇总#pragma用法

    这几天忙着去复习了,但是心理总是不踏实,不到实验室里就觉得一天的生活变了个样,现在还是晚上来这里“搞起”吧,白天还是在复习准备考试.因为要开始学习freescale,准备明年的比赛了,觉得是时候开始搞 ...