asp.net&C#各种加密码解密
2014-08-22 09:54
246 查看
asp.net&C#各种加密码解密
<pre class="csharp" name="code"> #region DES加密解密 /// <summary> /// DES加密算法必须使用Base64的Byte对象 /// </summary> /// <param name="data">待加密的字符数据</param> /// <param name="key">密匙,长度必须为64位(byte[8]))</param> /// <param name="iv">iv向量,长度必须为64位(byte[8])</param> /// <returns>加密后的字符</returns> public string EnDES(string data, byte[] key, byte[] iv) { DES des = DES.Create(); //这行代码很重要,需要根据不同的字符串选择不同的转换格式 byte[] tmp = Encoding.Unicode.GetBytes(data); byte[] encryptoData; ICryptoTransform encryptor = des.CreateEncryptor(key, iv); using (MemoryStream memoryStream = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write)) { using (StreamWriter writer = new StreamWriter(cs)) { writer.Write(data); writer.Flush(); writer.Dispose(); } } encryptoData = memoryStream.ToArray(); } des.Dispose(); return Convert.ToBase64String(encryptoData); } /// <summary> /// DES解密算法 /// </summary> /// <param name="data">待加密的字符数据</param> /// <param name="key">密匙,长度必须为64位(byte[8]))</param> /// <param name="iv">iv向量,长度必须为64位(byte[8])</param> /// <returns>加密后的字符</returns> public string DeDES(string data, byte[] key, byte[] iv) { string resultData = string.Empty; //这行代码很重要 byte[] temData = Convert.FromBase64String(data);//转换的格式挺重要 DES des = DES.Create(); ICryptoTransform decryptor = des.CreateDecryptor(key, iv); using (MemoryStream memoryStream = new MemoryStream(temData)) { CryptoStream cs = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read); StreamReader read = new StreamReader(cs); resultData = read.ReadLine(); read.Dispose(); } des.Dispose(); return resultData; } #endregion #region TripleDES加密解密 /// <summary> /// TripleDES加密 /// </summary> /// <param name="data">待加密的字符数据</param> /// <param name="key">密匙,长度可以为:128位(byte[16]),192位(byte[24])</param> /// <param name="iv">iv向量,长度必须为64位(byte[8])</param> /// <returns>加密后的字符</returns> public string EnTripleDES(string data, byte[] key, byte[] iv) { byte[] tmp; byte[] tmpData = Encoding.Unicode.GetBytes(data); TripleDES tripleDes = TripleDES.Create(); ICryptoTransform encryptor = tripleDes.CreateEncryptor(key, iv); using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) { StreamWriter writer = new StreamWriter(cs); writer.Write(data); writer.Flush();//这句很重要,在对流操作结束后必须用这句话强制将缓冲区中的数据全部写入到目标对象中 writer.Dispose(); } tmp = ms.ToArray(); } tripleDes.Dispose(); return Convert.ToBase64String(tmp); } /// <summary> /// TripleDES解密 /// </summary> /// <param name="data">待加密的字符数据</param> /// <param name="key">密匙,长度可以为:128位(byte[16]),192位(byte[24])</param> /// <param name="iv">iv向量,长度必须为64位(byte[8])</param> /// <returns>加密后的字符</returns> public string DeTripleDES(string data, byte[] key, byte[] iv) { byte[] tmp = Convert.FromBase64String(data); string result = string.Empty; TripleDES tripleDES = TripleDES.Create(); ICryptoTransform decryptor = tripleDES.CreateDecryptor(key, iv); using (MemoryStream ms = new MemoryStream(tmp)) { using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) { StreamReader reader = new StreamReader(cs); result = reader.ReadLine(); reader.Dispose(); } } tripleDES.Dispose(); return result; } #endregion #region AES加密解密 /// <summary> /// AES加密 /// </summary> /// <param name="data">待加密的字符数据</param> /// <param name="key">密匙,长度可以为:128位(byte[16]),192位(byte[24]),256位(byte[32])</param> /// <param name="iv">iv向量,长度必须为128位(byte[16])</param> /// <returns>加密后的字符</returns> public string EnAES(string data, byte[] key, byte[] iv) { Aes aes = Aes.Create(); byte[] tmp; ICryptoTransform encryptor = aes.CreateEncryptor(key, iv); using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) { StreamWriter writer = new StreamWriter(cs); writer.Write(data); writer.Flush(); writer.Dispose(); } tmp = ms.ToArray(); } aes.Dispose(); return Convert.ToBase64String(tmp); } /// <summary> /// AES解密 /// </summary> /// <param name="data">待加密的字符数据</param> /// <param name="key">密匙,长度可以为:128位(byte[16]),192位(byte[24]),256位(byte[32])</param> /// <param name="iv">iv向量,长度必须为128位(byte[16])</param> /// <returns>加密后的字符</returns> public string DeAES(string data, byte[] key, byte[] iv) { byte[] tmp = Convert.FromBase64String(data); string result = string.Empty; Aes aes = Aes.Create(); ICryptoTransform decryptor = aes.CreateDecryptor(key, iv); using (MemoryStream ms = new MemoryStream(tmp)) { using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) { StreamReader reader = new StreamReader(cs); result = reader.ReadLine(); reader.Dispose(); } } aes.Dispose(); return result; } #endregion #region Rijndael加密解密 /// <summary> /// Rijndael加密 /// </summary> /// <param name="data">需要加密的字符数据</param> /// <param name="key">密匙,长度可以为:64位(byte[8]),128位(byte[16]),192位(byte[24]),256位(byte[32])</param> /// <param name="iv">iv向量,长度为128(byte[16])</param> /// <returns>加密后的字符</returns> public string EnRijndael(string data, byte[] key, b 4000 yte[] iv) { Rijndael rijndeal = Rijndael.Create(); byte[] tmp; ICryptoTransform encryptor = rijndeal.CreateEncryptor(key, iv); using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) { StreamWriter writer = new StreamWriter(cs); writer.Write(data); writer.Dispose(); } tmp = ms.ToArray(); } rijndeal.Dispose(); return Convert.ToBase64String(tmp); } public string DeRijndael(string data, byte[] key, byte[] iv) { byte[] tmp = Convert.FromBase64String(data); string result = string.Empty; Rijndael rijndael = Rijndael.Create(); ICryptoTransform decryptor = rijndael.CreateDecryptor(key, iv); using (MemoryStream ms = new MemoryStream(tmp)) { using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) { StreamReader reader = new StreamReader(cs); result = reader.ReadLine(); reader.Dispose(); } } return result; } #endregion
相关文章推荐
- c#&asp.net 竞拍结束倒计时例子
- Asp.net &C#开发中的一些注意事项及小技巧
- ASP.NET AJAX客户端编程之旅(三)——让JavaScript和C#无障碍沟通:数据类型自动转换&序列化(转载)
- ASP.NET(C#)修改FTP密码
- c# asp.net 字符串加密解密的类
- 温故知新ASP.NET 2.0(C#)(4) - Cache&SqlCacheDependency(缓存和SqlCacheDependency特性)
- 用ASP.net(c#)上传各种文件的实例
- C# B/S程序中出现“异常详细信息: System.Data.SqlClient.SqlException: 用户 'XXX/ASPNET' 登录失败。”的处理方法
- "序列化" Serializable 理解 (asp.net C#)
- ASP.NET AJAX客户端编程教程(3)——让JavaScript和C#无障碍沟通:数据类型自动转换&序列化
- 提供各种计算机的毕业设计VB,DELPHI,VC++,C#,VB.NET,ASP.NET等
- Asp.net &C#开发中的一些注意事项及小技巧
- asp.net(c#) datelist DataGrid 中截取字符串加"..." 和 鼠标放上去字符全部
- C#操作Word完全方法·VS2005专业教程网|GotASPX.COM,专注于ASP.NET的专业教程网站
- asp.net(c#) datelist DataGrid 中截取字符串加"..." 和 鼠标放上去字符全部显示
- ASP.NET C# URL加密解密
- 一个发送电子邮件的类(C#&asp.net2)
- c#&asp.net 竞拍结束倒计时例子
- asp.net c# 连接各种数据库代码
- Asp.net &C#开发中的一些注意事项及小技巧【转】