c# winform 文件内容的加密解密
View Code
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


浙公网安备 33010602011771号