DES加密And解密

加密分为:单向加密,双向加密和对称加密。

  单向加密:通过对数据进行摘要计算生成密文,密文不可逆推还原。算法代表:Base64,MD5,SHA;

  双向加密:与单向加密相反,可以把密文逆推还原成明文,双向加密又分为对称加密和非对称加密。

  对称加密:指数据使用者必须拥有相同的密钥才可以进行加密解密,就像彼此约定的一串暗号。算法代表:DES,3DES,AES,IDEA,RC4,RC5;

 

DES加密原理
DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。
 
 
DES加密/解密代码
 1 //加密
 2         public static string Encode(string decryptString="需要加密的字符串", string encryptKey = "加密方式")
 3         {
 4             StringBuilder sb = new StringBuilder();
 5             using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
 6             {
 7                 byte[] key = ASCIIEncoding.ASCII.GetBytes(encryptKey);
 8                 byte[] iv = ASCIIEncoding.ASCII.GetBytes(encryptKey);
 9                 byte[] dataByteArray = Encoding.UTF8.GetBytes(decryptString);
10                 des.Mode = System.Security.Cryptography.CipherMode.CBC;
11                 des.Key = key;
12                 des.IV = iv;
13                 string encrypt = "";
14                 using (MemoryStream ms = new MemoryStream())
15                 using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
16                 {
17                     cs.Write(dataByteArray, 0, dataByteArray.Length);
18                     cs.FlushFinalBlock();
19                     encrypt = Convert.ToBase64String(ms.ToArray());
20                 }
21                 string str1 = Decrypt(encrypt);
22                 return encrypt.Replace("+","%2b");//在页面间传递的时候可能会使‘+’字符丢失所以用‘%2b’替换
23             }
24 }
25 
26 
27 
28 
29  //解密
30         public static string Decrypt(string decryptString="需要解密的字符串", string encryptKey = "加密方式")
31         {
32             try
33             {
            decryptstring=decryptstring.Replace("%2b","+");//解密的时候替换回原本的加密字符串
34 byte[] inputByteArray = Convert.FromBase64String(decryptString); 35 using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) 36 { 37 des.Key = ASCIIEncoding.ASCII.GetBytes(encryptKey); 38 des.IV = ASCIIEncoding.ASCII.GetBytes(encryptKey); 39 System.IO.MemoryStream ms = new System.IO.MemoryStream(); 40 using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write)) 41 { 42 cs.Write(inputByteArray, 0, inputByteArray.Length); 43 cs.FlushFinalBlock(); 44 cs.Close(); 45 } 46 string str1 = Encoding.UTF8.GetString(ms.ToArray()); 47 ms.Close(); 48 return str1; 49 } 50 } 51 catch (Exception ex) 52 { 53 return null; 54 } 55 }

 

 
 
posted @ 2017-10-17 15:12  TingZi_Unique  阅读(629)  评论(0编辑  收藏  举报
AmazingCounters.com 快递查询 物流API接口
请多多指教 微信公众号请多多指教