c# winform 文件内容的加密解密
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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