DES算法入口参数
DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥。Data为8个字节64位,是要被加密或解密的数据;Mode为DES的工作方法,有两种:加密或解密。
- 加密解密文件
1 /// <summary> 2 /// Enctypt File 3 /// </summary> 4 /// <param name="sInputFilename"></param> 5 /// <param name="sOutputFilename"></param> 6 /// <param name="sKey"></param> 7 public void EncryptFile(string sInputFilename, string sOutputFilename, string sKey) 8 { 9 DESCryptoServiceProvider DES = new DESCryptoServiceProvider(); 10 //A 64 bit key and IV is required for this provider. 11 //Set secret key For DES algorithm. 12 DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey); 13 //Set initialization vector. 14 DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey); 15 16 FileStream fin = null; 17 FileStream fout = null; 18 CryptoStream cryptoStream = null; 19 try 20 { 21 fin = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read); 22 fout = new FileStream(sOutputFilename, FileMode.OpenOrCreate, FileAccess.Write); 23 cryptoStream = new CryptoStream(fout, DES.CreateEncryptor(), CryptoStreamMode.Write); 24 25 byte[] bin = new byte[100]; //This is intermediate storage for the decryption. 26 long rdlen = 0; //This is the total number of bytes written. 27 long totlen = fin.Length; //This is the total length of the input file. 28 int len; //This is the number of bytes to be written at a time. 29 30 //Read from the input file, then encrypt and write to the output file. 31 while (rdlen < totlen) 32 { 33 len = fin.Read(bin, 0, 100); 34 cryptoStream.Write(bin, 0, len); 35 rdlen = rdlen + len; 36 } 37 } 38 catch (Exception ex) 39 { 40 throw ex; 41 } 42 finally 43 { 44 if (cryptoStream != null) { cryptoStream.Close(); } 45 if (fout != null) { fout.Close(); } 46 if (fin != null) { fin.Close(); } 47 } 48 } 49 50 /// <summary> 51 /// Decrypt File 52 /// </summary> 53 /// <param name="sInputFilename"></param> 54 /// <param name="sOutputFilename"></param> 55 /// <param name="sKey"></param> 56 public void DecryptFile(string sInputFilename, string sOutputFilename,string sKey) 57 { 58 DESCryptoServiceProvider DES = new DESCryptoServiceProvider(); 59 //A 64 bit key and IV is required for this provider. 60 //Set secret key For DES algorithm. 61 DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey); 62 //Set initialization vector. 63 DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey); 64 65 FileStream fin = null; 66 FileStream fout = null; 67 CryptoStream cryptoStream = null; 68 try 69 { 70 fin = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read); 71 fout = new FileStream(sOutputFilename, FileMode.OpenOrCreate, FileAccess.Write); 72 cryptoStream = new CryptoStream(fin, DES.CreateDecryptor(), CryptoStreamMode.Read); 73 74 byte[] bin = new byte[100]; //This is intermediate storage for the decryption. 75 long rdlen = 0; //This is the total number of bytes written. 76 long totlen = fin.Length; //This is the total length of the input file. 77 int len; //This is the number of bytes to be written at a time. 78 79 //Read from the input file, then encrypt and write to the output file. 80 while (rdlen < totlen) 81 { 82 len = cryptoStream.Read(bin, 0, 100); 83 if (len == 0) { break; } 84 fout.Write(bin, 0, len); 85 rdlen = rdlen + len; 86 } 87 } 88 catch(Exception ex) 89 { 90 throw ex; 91 } 92 finally 93 { 94 if (cryptoStream != null) { cryptoStream.Close(); } 95 if (fout != null) { fout.Close(); } 96 if (fin != null) { fin.Close(); } 97 } 98 }
- 加密解密文本
1 /// <summary> 2 /// Encrypt Text 3 /// </summary> 4 public string DesEncrypt(string pToEncrypt, string sKey) 5 { 6 MemoryStream ms = null; 7 CryptoStream ctyptoStream = null; 8 try 9 { 10 DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 11 des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); 12 des.IV = ASCIIEncoding.ASCII.GetBytes(sKey); 13 14 byte[] inputByteArray = Encoding.ASCII.GetBytes(pToEncrypt); 15 16 ms = new System.IO.MemoryStream(); 17 ctyptoStream = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); 18 ctyptoStream.Write(inputByteArray, 0, inputByteArray.Length); 19 ctyptoStream.FlushFinalBlock(); 20 } 21 catch (Exception ex) 22 { 23 throw ex; 24 } 25 finally 26 { 27 if (ctyptoStream != null) { ctyptoStream.Close(); } 28 if (ms != null) { ms.Close(); } 29 } 30 return Convert.ToBase64String(ms.ToArray()); 31 } 32 33 /// <summary> 34 /// Dectypt Text 35 /// </summary> 36 public string DesDecrypt(string pToDecrypt, string sKey) 37 { 38 MemoryStream ms = null; 39 CryptoStream ctyptoStream = null; 40 try 41 { 42 DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 43 des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); 44 des.IV = ASCIIEncoding.ASCII.GetBytes(sKey); 45 46 byte[] inputByteArray = Convert.FromBase64String(pToDecrypt); 47 48 ms = new System.IO.MemoryStream(); 49 ctyptoStream = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); 50 ctyptoStream.Write(inputByteArray, 0, inputByteArray.Length); 51 ctyptoStream.FlushFinalBlock(); 52 } 53 catch (Exception ex) 54 { 55 throw ex; 56 } 57 finally 58 { 59 if (ctyptoStream != null) { ctyptoStream.Close(); } 60 if (ms != null) { ms.Close(); } 61 } 62 return Encoding.ASCII.GetString(ms.ToArray()); 63 }