c# 加密与解密
2015-09-28 21:48
579 查看
三种加密方法,代码如下:
using System.Security.Cryptography; using System.IO; namespace Common { /**//// <summary> /// DESEncrypt加密解密算法。 /// </summary> public sealed class DESEncrypt { private DESEncrypt() { // // TODO: 在此处添加构造函数逻辑 // } private static string key = "zhoufoxcn"; /**//// <summary> /// 对称加密解密的密钥 /// </summary> public static string Key { get { return key; } set { key = value; } } /**//// <summary> /// DES加密 /// </summary> /// <param name="encryptString"></param> /// <returns></returns> public static string DesEncrypt(string encryptString) { byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8)); byte[] keyIV = keyBytes; byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider provider = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, provider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } /**//// <summary> /// DES解密 /// </summary> /// <param name="decryptString"></param> /// <returns></returns> public static string DesDecrypt(string decryptString) { byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8)); byte[] keyIV = keyBytes; byte[] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider provider = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, provider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Encoding.UTF8.GetString(mStream.ToArray()); } } /// <summary> /// 一个实现MD5散列字符串的类 /// 作者:周公 /// 日期:2007 /// </summary> public sealed class MD5Hashing { private static MD5 md5 = MD5.Create(); //私有化构造函数 private MD5Hashing() { } /// <summary> /// 使用utf8编码将字符串散列 /// </summary> /// <param name="sourceString">要散列的字符串</param> /// <returns>散列后的字符串</returns> public static string HashString(string sourceString) { return HashString(Encoding.UTF8, sourceString); } /// <summary> /// 使用指定的编码将字符串散列 /// </summary> /// <param name="encode">编码</param> /// <param name="sourceString">要散列的字符串</param> /// <returns>散列后的字符串</returns> public static string HashString(Encoding encode, string sourceString) { byte[] source = md5.ComputeHash(encode.GetBytes(sourceString)); StringBuilder sBuilder = new StringBuilder(); for (int i = 0; i < source.Length; i++) { sBuilder.Append(source[i].ToString("x2")); } return sBuilder.ToString(); } } /// <summary> /// 实现Base64加密解密 /// 作者:周公 /// 时间:2007 /// </summary> public sealed class Base64 { /// <summary> /// Base64加密 /// </summary> /// <param name="codeName">加密采用的编码方式</param> /// <param name="source">待加密的明文</param> /// <returns></returns> public static string EncodeBase64(Encoding encode, string source) { byte[] bytes = encode.GetBytes(source); string str; try { str = Convert.ToBase64String(bytes);//Convert.ToBase64String(bytes); } catch { str = source; //encode = source; } return str; //return encode } /// <summary> /// Base64加密,采用utf8编码方式加密 /// </summary> /// <param name="source">待加密的明文</param> /// <returns>加密后的字符串</returns> public static string EncodeBase64(string source) { return EncodeBase64(Encoding.UTF8, source); } /// <summary> /// Base64解密 /// </summary> /// <param name="codeName">解密采用的编码方式,注意和加密时采用的方式一致</param> /// <param name="result">待解密的密文</param> /// <returns>解密后的字符串</returns> public static string DecodeBase64(Encoding encode, string result) { string decode = ""; byte[] bytes = Convert.FromBase64String(result); try { decode = encode.GetString(bytes); } catch { decode = result; } return decode; } /// <summary> /// Base64解密,采用utf8编码方式解密 /// </summary> /// <param name="result">待解密的密文</param> /// <returns>解密后的字符串</returns> public static string DecodeBase64(string result) { return DecodeBase64(Encoding.UTF8, result); } }
相关文章推荐
- C#调用外部exe
- C# 读取EXCEL文件的三种经典方法
- 学习正则表达式及c#应用
- C#的几种压缩文件方法
- C#: .net序列化及反序列化 [XmlElement(“节点名称”)] [XmlAttribute(“节点属性”)] (下篇)
- C#: .net序列化及反序列化 [XmlElement(“节点名称”)] [XmlAttribute(“节点属性”)] (上篇)
- C#(MVC) Word 替换,填充表格,导出并下载PDF文档
- C#中dynamic的正确用法
- C# WindowsForm 员工管理系统五【查看工资】
- C#结构体特性实例分析
- c#中字符串截取使用的方法(转)
- C#线程编程实例
- 判断多边形是顺时针还是逆时针(C#实现)
- C#.NET实现网页自动登录的方法
- C#中的面向对象编程: 类和对象
- C#多线程编程(转载)
- c#中如何避免Button,CheckBox等的点击状态时的焦点矩形框问题:
- C# .NET 发送邮件 代码
- C#实现二叉树遍历算法
- C# form 传参数的几个方法