- #region 加密方法
- public bool EncryptFile(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.CreateEncryptor(),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
-
- #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