DES数据加密采用对称加密,进行加密,在c#中封装了对应的算法类DESCryptoServiceProvider。
DESCryptoServiceProvider:定义访问数据加密标准 (DES) 算法的加密服务提供程序 (CSP) 版本的包装对象。无法继承此类。
命名空间:System.Security.Cryptography
程序集:mscorlib(在 mscorlib.dll 中)
1 /// <summary> 2 /// 数据加密 采用DES[数据对称加密]进行数据加密 3 /// </summary> 4 public sealed class MyEncrpt 5 { 6 static byte[] Keys; 7 8 /// <summary> 9 /// 构造函数 10 /// </summary> 11 static MyEncrpt() 12 { 13 string str="hedongsong123456"; 14 Keys = Encoding.UTF8.GetBytes(str.Substring(0, 8)); 15 } 16 /// <summary> 17 /// 对字符串进行加密 18 /// </summary> 19 /// <param name="sourceString"></param> 20 /// <param name="key"></param> 21 /// <returns></returns> 22 public static string Encrypt(string sourceString, string key) 23 { 24 byte[] btKey = Encoding.UTF8.GetBytes(key.Substring(0, 8)); 25 byte[] btIv = Keys; 26 DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 27 using (MemoryStream ms = new MemoryStream()) 28 { 29 byte[] inData = Encoding.UTF8.GetBytes(sourceString); 30 try 31 { 32 using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIv), CryptoStreamMode.Write)) 33 { 34 cs.Write(inData, 0, inData.Length); 35 cs.FlushFinalBlock(); 36 } 37 return Convert.ToBase64String(ms.ToArray()); 38 } 39 catch (Exception e) 40 { 41 throw e; 42 } 43 } 44 } 45 46 /// <summary> 47 /// 对文件进行加密 48 /// </summary> 49 /// <param name="sourceFile"></param> 50 /// <param name="encryptedFile"></param> 51 /// <param name="key"></param> 52 public static void Encrypt(string sourceFile,string encryptedFile,string key) 53 { 54 byte[] btKey = Encoding.UTF8.GetBytes(key.Substring(0, 8)); 55 byte[] btIv = Keys; 56 DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 57 FileStream soufs = new FileStream(sourceFile, FileMode.Open, FileAccess.Read); 58 FileStream encfs = new FileStream(encryptedFile,FileMode.Create,FileAccess.Write); 59 byte[] btSou=new byte[soufs.Length]; 60 soufs.Read(btSou,0,btSou.Length); 61 using(CryptoStream cs=new CryptoStream(encfs,des.CreateEncryptor(btKey,btIv),CryptoStreamMode.Write)) 62 { 63 cs.Write(btSou, 0, btSou.Length); 64 cs.FlushFinalBlock(); 65 } 66 soufs.Close(); 67 soufs.Dispose(); 68 encfs.Close(); 69 encfs.Dispose(); 70 } 71 72 /// <summary> 73 /// 对字符串进行解密 74 /// </summary> 75 /// <param name="encryptedString"></param> 76 /// <param name="key"></param> 77 /// <returns></returns> 78 public static string Decrypt(string encryptedString, string key) 79 { 80 byte[] btKey = Encoding.UTF8.GetBytes(key.Substring(0, 8)); 81 byte[] btIv = Keys; 82 DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 83 using (MemoryStream ms = new MemoryStream()) 84 { 85 byte[] inData = Convert.FromBase64String(encryptedString); 86 try 87 { 88 using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(btKey, btIv), CryptoStreamMode.Write)) 89 { 90 cs.Write(inData, 0, inData.Length); 91 cs.FlushFinalBlock(); 92 } 93 System.Text.Encoding encoding = new System.Text.UTF8Encoding(); 94 return encoding.GetString(ms.ToArray()); 95 } 96 catch (Exception e) 97 { 98 throw e; 99 } 100 } 101 } 102 103 /// <summary> 104 /// 对文件进行解密 105 /// </summary> 106 /// <param name="sourceFile"></param> 107 /// <param name="encryptedFile"></param> 108 /// <param name="key"></param> 109 public static void Decrypt(string sourceFile, string encryptedFile, string key) 110 { 111 byte[] btKey = Encoding.UTF8.GetBytes(key.Substring(0, 8)); 112 byte[] btIv = Keys; 113 DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 114 FileStream soufs = new FileStream(sourceFile, FileMode.Open, FileAccess.Read); 115 FileStream encfs = new FileStream(encryptedFile, FileMode.Create, FileAccess.Write); 116 byte[] btSou = new byte[soufs.Length]; 117 soufs.Read(btSou, 0, btSou.Length); 118 using (CryptoStream cs = new CryptoStream(encfs, des.CreateDecryptor(btKey, btIv), CryptoStreamMode.Write)) 119 { 120 cs.Write(btSou, 0, btSou.Length); 121 cs.FlushFinalBlock(); 122 } 123 soufs.Close(); 124 soufs.Dispose(); 125 encfs.Close(); 126 encfs.Dispose(); 127 } 128 }
DES采用密匙和对称向量进行加密和解密
业务使用情况:用于对敏感数据进行加密,防止数据泄密。