加密,解密
2011-08-25 09:55
197 查看
using System; using System.Security.Cryptography; using System.IO; using System.Text; using System.Globalization; /// <summary> /// 对指定内容进行DES加密和解密处理 /// </summary> public sealed class DESEncrypt { /// <summary> /// 对字符串进行DES加密 /// </summary> /// <param name="sourcestring">待加密的字符串</param> /// <param name="key">必须长度等于8的字符串</param> /// <param name="iv">必须长度大于等于8的字符串</param> /// <returns>加密后的BASE64编码的字符串</returns> internal static string Encrypt(string src, string key, string iv) { byte[] byteKey = Encoding.Default.GetBytes(key); byte[] byteIv = Encoding.Default.GetBytes(iv); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); using (MemoryStream ms = new MemoryStream()) { try { byte[] data = Encoding.Default.GetBytes(src); using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byteKey, byteIv), CryptoStreamMode.Write)) { cs.Write(data, 0, data.Length); cs.FlushFinalBlock(); } return Convert.ToBase64String(ms.ToArray()); } catch { throw; } } } /// <summary> /// 对DES加密后的字符串进行解密 /// </summary> /// <param name="encryptedString">待解密的字符串</param> /// <param name="key">同加密时所采用的key</param> /// <param name="iv">同加密时所采用的iv</param> /// <returns>解密后的字符串</returns> internal static string Decrypt(string src, string key, string iv) { byte[] byteKey = Encoding.Default.GetBytes(key); byte[] byteIv = Encoding.Default.GetBytes(iv); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); using (MemoryStream ms = new MemoryStream()) { try { byte[] data = Convert.FromBase64String(src); using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byteKey, byteIv), CryptoStreamMode.Write)) { cs.Write(data, 0, data.Length); cs.FlushFinalBlock(); } return Encoding.Default.GetString(ms.ToArray()); } catch { throw; } } } /// <summary> /// 对文件内容进行DES加密 /// </summary> /// <param name="sourceFile">待加密的文件绝对路径</param> /// <param name="destFile">加密后的文件保存的绝对路径</param> /// <param name="key">必须长度等于8的字符串</param> /// <param name="iv">必须长度大于等于8的字符串</param> internal static void EncryptFile(string sourceFile, string destFile, string key, string iv) { if (!File.Exists(sourceFile)) throw new FileNotFoundException("指定的文件路径不存在!", sourceFile); byte[] byteKey = Encoding.Default.GetBytes(key); byte[] byteIV = Encoding.Default.GetBytes(iv); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] byteFile = File.ReadAllBytes(sourceFile); using (FileStream fs = new FileStream(destFile, FileMode.Create, FileAccess.Write)) { try { using (CryptoStream cs = new CryptoStream(fs, des.CreateEncryptor(byteKey, byteIV), CryptoStreamMode.Write)) { cs.Write(byteFile, 0, byteFile.Length); cs.FlushFinalBlock(); } } catch { throw; } finally { fs.Close(); } } } /// <summary> /// Encrypts the file. /// 对文件内容进行DES加密,加密后覆盖掉原来的文件 /// </summary> /// <param name="sourceFile">The source file.待加密的文件的绝对路径</param> /// <param name="key">必须长度等于8的字符串</param> /// <param name="iv">必须长度大于等于8的字符串</param> internal static void EncryptFile(string sourceFile, string key, string iv) { EncryptFile(sourceFile, sourceFile, key, iv); } /// <summary> /// 对文件内容进行DES解密 /// </summary> /// <param name="sourceFile">待解密的文件绝对路径</param> /// <param name="destFile">解密后的文件保存的绝对路径</param> /// <param name="key">同加密时所采用的key</param> /// <param name="iv">同加密时所采用的iv</param> internal static void DecryptFile(string sourceFile, string destFile, string key, string iv) { if (!File.Exists(sourceFile)) throw new FileNotFoundException("指定的文件路径不存在!", sourceFile); byte[] byteKey = Encoding.Default.GetBytes(key); byte[] byteIV = Encoding.Default.GetBytes(iv); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] byteFile = File.ReadAllBytes(sourceFile); using (FileStream fs = new FileStream(destFile, FileMode.Create, FileAccess.Write)) { try { using (CryptoStream cs = new CryptoStream(fs, des.CreateDecryptor(byteKey, byteIV), CryptoStreamMode.Write)) { cs.Write(byteFile, 0, byteFile.Length); cs.FlushFinalBlock(); } } catch { throw; } finally { fs.Close(); } } } /// <summary> /// 对文件内容进行DES解密,加密后覆盖掉原来的文件 /// </summary> /// <param name="sourceFile">待解密的文件的绝对路径</param> /// <param name="key">同加密时所采用的key</param> /// <param name="iv">同加密时所采用的iv</param> internal static void DecryptFile(string sourceFile, string key, string iv) { DecryptFile(sourceFile, sourceFile, key, iv); } }
相关文章推荐
- C#做的一个加密/解密的类
- 加密解密帮助类(对称加密)
- 【教程】PDF控件Spire.PDF 教程:在C#中加密和解密PDF文件
- java纯数字加密解密实例
- NotNET中加密和解密的实现方法二
- C#-java RSA加密解密
- C++加密解密php代码的方法
- iOS 开发 base64 加密和解密
- PHP服务器生成密钥,java端加密,php解密的方法。更新Android加密方法
- AS3加密解密Des
- AES加密、解密(linux、window加密解密效果一致,支持中文)
- Android中AES加密和解密
- [ASP.NET2.0]Common层通用代码之加密解密
- URL参数加密解密过程
- 使用X.509数字证书加密解密实务(一)-- 证书的获得和管理
- Java RSA加密解密
- Android--AES加密解密
- 对存储过程进行加密和解密(SQL 2008/SQL 2012)
- C#实现的AES加密解密完整实例
- iOS RSA加密和解密