c# Aes加解密和对象序列化
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加解密和对象序列化的更多相关文章
- 数据採集器服务——Socket(今天才发现AES加解密代码跟贴的时候不一样,貌似乱码,不知什么情况)
近期刚做的一个项目.关于 Socket TCP 通信. 需求方提供了一个 ARM 机器,及数据採集器,须要我做一个服务端与数据採集器进行交互. 目的: 数据採集器:定时将读取到的数据发送到服务端. 服 ...
- java AES加解密
AES加解密工具类 package com.yan.demo; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64D ...
- RSA,AES加解密算法的实现
目录 Python实现RSA公钥加密算法 RSA公钥加密算法原理 RSA算法的Python实现 AES加解密算法实现 AES加解密算法原理 AES加解密算法Python实现 参考文献 Python实现 ...
- aes加解密前后端-后台
一.web.xml: <filter> <filter-name>fastLoginFilter</filter-name> <filter-class> ...
- DES,AeS加解密,MD5,SHA加密
1.DES一共就有4个参数参与运作:明文.密文.密钥.向量.其中这4者的关系可以理解为: 密文=明文+密钥+向量: 明文=密文-密钥-向量: 为什么要向量这个参数呢?因为如果有一篇文章,有几个词重复, ...
- Java、C#双语版配套AES加解密示例
这年头找个正经能用的东西那是真难,网上一搜索一大堆,正经能用的没几个,得,最后还是得靠自己,正巧遇上需要AES加解密的地方了,而且还是Java和C#间的相互加解密操作,这里做个备忘 这里采用的加解 ...
- AES加解密算法Qt实现
[声明] (1) 本文源码 在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能.在此表示感谢!该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 除图1外 ...
- aes加解密 Illegal key size
做aes加密时,发生一个奇怪的错误,在本地环境是好的,发布到测试环境就出问题, java.security.InvalidKeyException: Illegal key size 想到本地环境之前 ...
- C# RSA加解密与验签,AES加解密,以及与JAVA平台的密文加解密
前言: RSA算法是利用公钥与密钥对数据进行加密验证的一种算法.一般是拿私钥对数据进行签名,公钥发给友商,将数据及签名一同发给友商,友商利用公钥对签名进行验证.也可以使用公钥对数据加密,然后用私钥对数 ...
随机推荐
- DB9 公头母头引脚定义及连接
1.实物及引脚简单介绍 在做开发的时候常常会用到串行接口,一般9针的串行接口居多.例如以下图所看到的: 公头母头用于连接线的採用上图封装.但用于开发板的时候採用90度弯角插针的封装.例如以下图: 各引 ...
- Delphi2010下的FillChar
在delphi2010中,因为unicode的原因,FillChar使用方法已经和老版delphi大不相同了. 如果想用某一个字符(或汉字)填充内存 buf: array[0..1023] of Ch ...
- 进程间通信之XSI IPC
XSI IPC源自于系统V的IPC功能. 有三种IPC我们称作XSI IPC,即消息队列.信号量以及共享存储器,它们之间有很多相似之处. 1.标识符和键 每个内核中的IPC结构(消息队列.信号量或共享 ...
- win7 下 qwt安装教程
一.安装:qwt的安装很简单,可以参看它的install文档.1.解开下载下来的zip文件,比如解开到d:\qt\qwt-5.0.2目录下,修改目录下的qwtconfig.pri文件里面的安装路径,比 ...
- Expectation Maximization and GMM
Jensen不等式 Jensen不等式给出了积分的凸函数值必定大于凸函数(convex)的积分值的定理.在凸函数曲线上的任意两点间连接一条线段,那么线段会位于曲线之上,这就是将Jensen不等式应用到 ...
- Java_eclipse软件与git配合使用创建git仓库
一.在eclipse上安装git,和安装其他插件一样 help->Install new software->add... 在弹出框中输入name,location;点击-->ok ...
- 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 提供程序解决办法
---恢复内容开始--- 最近在用c#写一个处理excel的软件,连接excel的时候出现一个问题未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 提供程序,究其原因是我的电脑是 ...
- Destroying the bus stations
Destroying the bus stations Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1832 Acce ...
- G - Just a Hook
Description In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of t ...
- 产品设计原则之移动APP【转】
随着移动互联网的发展,越来越多的Web产品开始布局移动端,因此最近经常碰到PM们在交流讨论移动APP产品的设计.我从事移动互联网已经有一年多了,通过不断的学习和实践也积累了一些心得,今天整理并分享一下 ...