主要代码 加密:
#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 |
|