c# AES加解密并转ASCII码
2016-01-27 17:03
591 查看
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace AESDecryptDemo { public class AES { public static string AESEncryptASCII(string plainStr) { StringBuilder sb = new StringBuilder(); byte[] bKey = Encoding.UTF8.GetBytes(GetKey()); byte[] bIV = Encoding.UTF8.GetBytes(GetIV()); byte[] byteArray = Encoding.UTF8.GetBytes(plainStr); string encrypt = null; Rijndael aes = Rijndael.Create(); using (MemoryStream mStream = new MemoryStream()) { using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write)) { cStream.Write(byteArray, 0, byteArray.Length); cStream.FlushFinalBlock(); encrypt = Encode(Convert.ToBase64String(mStream.ToArray())); } } aes.Clear(); return encrypt; } public static string AESEncrypt(string plainStr) { StringBuilder sb = new StringBuilder(); byte[] bKey = Encoding.UTF8.GetBytes(GetKey()); byte[] bIV = Encoding.UTF8.GetBytes(GetIV()); byte[] byteArray = Encoding.UTF8.GetBytes(plainStr); string encrypt = null; Rijndael aes = Rijndael.Create(); using (MemoryStream mStream = new MemoryStream()) { using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write)) { cStream.Write(byteArray, 0, byteArray.Length); cStream.FlushFinalBlock(); encrypt = Convert.ToBase64String(mStream.ToArray()); } } aes.Clear(); return encrypt; } public static string AESDecryptASCII(string encryptStr) { encryptStr = Decode(encryptStr); byte[] bKey = Encoding.UTF8.GetBytes(GetKey()); byte[] bIV = Encoding.UTF8.GetBytes(GetIV()); byte[] byteArray = Convert.FromBase64String(encryptStr); string decrypt = null; Rijndael aes = Rijndael.Create(); using (MemoryStream mStream = new MemoryStream()) { using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write)) { cStream.Write(byteArray, 0, byteArray.Length); cStream.FlushFinalBlock(); decrypt = Encoding.UTF8.GetString(mStream.ToArray()); } } aes.Clear(); return decrypt; } public static string AESDecrypt(string encryptStr) { byte[] bKey = Encoding.UTF8.GetBytes(GetKey()); byte[] bIV = Encoding.UTF8.GetBytes(GetIV()); byte[] byteArray = Convert.FromBase64String(encryptStr); string decrypt = null; Rijndael aes = Rijndael.Create(); using (MemoryStream mStream = new MemoryStream()) { using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write)) { cStream.Write(byteArray, 0, byteArray.Length); cStream.FlushFinalBlock(); decrypt = Encoding.UTF8.GetString(mStream.ToArray()); } } aes.Clear(); return decrypt; } public static string Encode(string strEncode) { string strReturn = "";// 存储转换后的编码 foreach (short shortx in strEncode.ToCharArray()) { strReturn += shortx.ToString("X"); } return strReturn; } public static string Decode(string strDecode) { string sResult = ""; for (int i = 0; i < strDecode.Length / 2; i++) { sResult += (char)short.Parse(strDecode.Substring(i * 2, 2), global::System.Globalization.NumberStyles.HexNumber); } return sResult; } private static string GetKey() { return @")O[NB]6,YF}+efcaj{+oESb9d8>Z'e9M"; } /// <summary> /// 获取向量 /// </summary> private static string GetIV() { return @"L+\~f4,Ir)b$=pkf"; } } }
相关文章推荐
- C#窗口传值及方法调用1--通过静态方法实现
- C#各种数组直接的数据复制/转换
- 【C#】改变物体顺序
- lock关键字只不过是C#提供的语法糖
- c#学习笔记——C#基础(一)
- C#在数据层过滤属性中的主键
- C# 友元函数
- c# internal
- 以逗号分隔的字符串,剔除重复的字符
- C# 条形码识别
- c#获取当前年的周数,当前月的天数
- C#导出EXCEL的几种方法
- C# 导出数据到Excel模板中
- C#版机房重构登录(不完整版)
- C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别
- C#之委托
- c# << , >> , &, |,^
- c#中string类的方法
- 【C#】常用的一些特性
- C#学习之初步理解委托、事件、匿名方法和Lambda