c# winform 文件内容的加密与解密

  1. #region 加密方法   
  2. public bool EncryptFile(string filePath,string savePath,string keyStr)    
  3. {    
  4.     DESCryptoServiceProvider des = new DESCryptoServiceProvider();    
  5.     if(keyStr=="")    
  6.         keyStr=key;    
  7.     FileStream fs=File.OpenRead(filePath);    
  8.     byte[] inputByteArray =new byte[fs.Length];    
  9.     fs.Read(inputByteArray,0,(int)fs.Length);    
  10.     fs.Close();    
  11.     byte[] keyByteArray=Encoding.Default.GetBytes(keyStr);    
  12.     SHA1 ha=new SHA1Managed();    
  13.     byte[] hb=ha.ComputeHash(keyByteArray);    
  14.     sKey=new byte[8];    
  15.     sIV=new byte[8];    
  16.     for(int i=0;i<8;i++)    
  17.         sKey[i]=hb[i];    
  18.     for(int i=8;i<16;i++)    
  19.         sIV[i-8]=hb[i];    
  20.     des.Key=sKey;    
  21.     des.IV=sIV;    
  22.     MemoryStream ms = new MemoryStream();    
  23.     CryptoStream cs = new CryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write);    
  24.     cs.Write(inputByteArray, 0, inputByteArray.Length);    
  25.     cs.FlushFinalBlock();    
  26.     fs=File.OpenWrite(savePath);    
  27.   
  28.     foreach(byte b in ms.ToArray())    
  29.     {    
  30.         fs.WriteByte(b);               
  31.     }                      
  32.     fs.Close();    
  33.     cs.Close();    
  34.     ms.Close();    
  35.     return true;    
  36. }  
  37. #endregion 

#region 解密方法    public bool DecryptFile(string filePath,string savePath,string keyStr)     {         DESCryptoServiceProvider des = new DESCryptoServiceProvider();         if(keyStr=="")             keyStr=key;         FileStream fs=File.OpenRead(filePath);         byte[] inputByteArray =new byte[fs.Length];         fs.Read(inputByteArray,0,(int)fs.Length);         fs.Close();         byte[] keyByteArray=Encoding.Default.GetBytes(keyStr);         SHA1 ha=new SHA1Managed();         byte[] hb=ha.ComputeHash(keyByteArray);         sKey=new byte[8];         sIV=new byte[8];         for(int i=0;i<8;i++)             sKey[i]=hb[i];         for(int i=8;i<16;i++)             sIV[i-8]=hb[i];         des.Key=sKey;         des.IV=sIV;         MemoryStream ms = new MemoryStream();         CryptoStream cs = new CryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write);         cs.Write(inputByteArray, 0, inputByteArray.Length);         cs.FlushFinalBlock();         fs=File.OpenWrite(savePath);         foreach(byte b in ms.ToArray())         {             fs.WriteByte(b);         }         fs.Close();         cs.Close();         ms.Close();         return true;       #endregion

你可能感兴趣的:(C#,ASP.NET)