愤斗的程序猿丷
Keep on going never give up.
  1 using System;
  2 using System.Data;
  3 using System.Configuration;
  4 using System.Web;
  5 using System.Security.Cryptography;
  6 using System.Text;
  7 using System.IO;
  8 using System.Windows.Forms;
  9 
 10 
 11 /// <summary>
 12 /// DesEncrypt 的摘要说明
 13 /// </summary>
 14 public class DesMd5
 15 {
 16      public DesMd5()
 17 {
 18    //
 19    // TODO: 在此处添加构造函数逻辑
 20    //
 21 }
 22     
 23 
 24 
 25 
 26 
 27      /// <summary>
 28      /// Encrypt the string
 29      /// Attention:key must be 8 bits
 30      /// </summary>
 31      /// <param name="strText">string</param>
 32      /// <param name="strEncrKey">key</param>
 33      /// <returns></returns>
 34      public string DesEncrypt(string strText, string strEncrKey)
 35      {
 36          byte[] byKey = null;
 37          byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
 38          try
 39          {
 40              byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0, 8));
 41              DESCryptoServiceProvider des = new DESCryptoServiceProvider();
 42              byte[] inputByteArray = Encoding.UTF8.GetBytes(strText);
 43              MemoryStream ms = new MemoryStream();
 44              CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);
 45              cs.Write(inputByteArray, 0, inputByteArray.Length);
 46              cs.FlushFinalBlock();
 47              return Convert.ToBase64String(ms.ToArray());
 48 
 49          }
 50          catch (System.Exception error)
 51          {
 52             // MessageBox.Show(error.Message);
 53              return "error:" + error.Message + "\r";
 54          }
 55      }
 56      /// <summary>
 57      /// Decrypt string
 58      /// Attention:key must be 8 bits
 59      /// </summary>
 60      /// <param name="strText">Decrypt string</param>
 61      /// <param name="sDecrKey">key</param>
 62      /// <returns>output string</returns>
 63      public string DesDecrypt(string strText, string sDecrKey)
 64      {
 65          byte[] byKey = null;
 66          byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
 67          byte[] inputByteArray = new Byte[strText.Length];
 68          try
 69          {
 70              byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0, 8));
 71              DESCryptoServiceProvider des = new DESCryptoServiceProvider();
 72              inputByteArray = Convert.FromBase64String(strText);
 73              MemoryStream ms = new MemoryStream();
 74              CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);
 75              cs.Write(inputByteArray, 0, inputByteArray.Length);
 76              cs.FlushFinalBlock();
 77              System.Text.Encoding encoding = new System.Text.UTF8Encoding();
 78              return encoding.GetString(ms.ToArray());
 79          }
 80          catch (System.Exception error)
 81          {
 82             // MessageBox.Show(error.Message);
 83              return "error:" + error.Message + "\r";
 84          }
 85      }
 86      /// <summary>
 87      /// Encrypt files
 88      /// Attention:key must be 8 bits
 89      /// </summary>
 90      /// <param name="m_InFilePath">Encrypt file path</param>
 91      /// <param name="m_OutFilePath">output file</param>
 92      /// <param name="strEncrKey">key</param>
 93      public void DesEncryptFile(string m_InFilePath, string m_OutFilePath, string strEncrKey)
 94      {
 95          byte[] byKey = null;
 96          byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
 97          try
 98          {
 99              byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0, 8));
100              FileStream fin = new FileStream(m_InFilePath, FileMode.Open, FileAccess.Read);
101              FileStream fout = new FileStream(m_OutFilePath, FileMode.OpenOrCreate, FileAccess.Write);
102              fout.SetLength(0);
103              //Create variables to help with read and write.
104              byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
105              long rdlen = 0;               //This is the total number of bytes written.
106              long totlen = fin.Length;     //This is the total length of the input file.
107              int len;                      //This is the number of bytes to be written at a time.
108              DES des = new DESCryptoServiceProvider();
109              CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);
110 
111              //Read from the input file, then encrypt and write to the output file.
112              while (rdlen < totlen)
113              {
114                  len = fin.Read(bin, 0, 100);
115                  encStream.Write(bin, 0, len);
116                  rdlen = rdlen + len;
117              }
118              encStream.Close();
119              fout.Close();
120              fin.Close();
121 
122 
123          }
124          catch (System.Exception error)
125          {
126              MessageBox.Show(error.Message, "错误信息");
127             // MessageBox.Show(error.Message.ToString());
128          }
129      }
130      /// <summary>
131      /// Decrypt files
132      /// Attention:key must be 8 bits
133      /// </summary>
134      /// <param name="m_InFilePath">Decrypt filepath</param>
135      /// <param name="m_OutFilePath">output filepath</param>
136      /// <param name="sDecrKey">key</param>
137      public void DesDecryptFile(string m_InFilePath, string m_OutFilePath, string sDecrKey)
138      {
139          byte[] byKey = null;
140          byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
141          try
142          {
143              byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0, 8));
144              FileStream fin = new FileStream(m_InFilePath, FileMode.Open, FileAccess.Read);
145              FileStream fout = new FileStream(m_OutFilePath, FileMode.OpenOrCreate, FileAccess.Write);
146              fout.SetLength(0);
147              //Create variables to help with read and write.
148              byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
149              long rdlen = 0;               //This is the total number of bytes written.
150              long totlen = fin.Length;     //This is the total length of the input file.
151              int len;                      //This is the number of bytes to be written at a time.
152              DES des = new DESCryptoServiceProvider();
153              CryptoStream encStream = new CryptoStream(fout, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);
154 
155              //Read from the input file, then encrypt and write to the output file.
156              while (rdlen < totlen)
157              {
158                  len = fin.Read(bin, 0, 100);
159                  encStream.Write(bin, 0, len);
160                  rdlen = rdlen + len;
161              }
162              encStream.Close();
163              fout.Close();
164              fin.Close();
165          }
166          catch (System.Exception error)
167          {
168              MessageBox.Show(error.Message, "错误信息");
169              //MessageBox.Show("error:" + error.Message);
170          }
171      }
172     
173      ///MD5加密
174      public string MD5Encrypt(string pToEncrypt, string sKey)
175      {
176          DESCryptoServiceProvider des = new DESCryptoServiceProvider();
177          byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
178          des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
179          des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
180          MemoryStream ms = new MemoryStream();
181          CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
182          cs.Write(inputByteArray, 0, inputByteArray.Length);
183          cs.FlushFinalBlock();
184          StringBuilder ret = new StringBuilder();
185          foreach (byte b in ms.ToArray())
186          {
187              ret.AppendFormat("{0:X2}", b);
188          }
189          ret.ToString();
190          return ret.ToString();
191 
192      }
193      ///MD5解密
194      public string MD5Decrypt(string pToDecrypt, string sKey)
195      {
196          DESCryptoServiceProvider des = new DESCryptoServiceProvider();
197          byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
198          for (int x = 0; x < pToDecrypt.Length / 2; x++)
199          {
200              int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
201              inputByteArray[x] = (byte)i;
202          }
203          des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
204          des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
205          MemoryStream ms = new MemoryStream();
206          CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
207          cs.Write(inputByteArray, 0, inputByteArray.Length);
208          cs.FlushFinalBlock();
209          StringBuilder ret = new StringBuilder();
210          return System.Text.Encoding.Default.GetString(ms.ToArray());
211      }
212 
213      //哈希加密
214      public string HashEncrypt(string plain)
215      {
216          byte[] buffer = System.Text.Encoding.UTF8.GetBytes(plain);
217          System.Security.Cryptography.SHA1CryptoServiceProvider sha =
218              new System.Security.Cryptography.SHA1CryptoServiceProvider();
219          byte[] hash = sha.ComputeHash(buffer);
220          System.Text.StringBuilder passwordBuilder = new System.Text.StringBuilder(32);
221          foreach (byte hashByte in hash)
222          {
223              passwordBuilder.Append(hashByte.ToString("x2"));
224          }
225          return passwordBuilder.ToString();
226      }
227 
228 }

 

posted on 2016-08-04 10:30  愤斗的程序猿丷  阅读(1584)  评论(0编辑  收藏  举报