62,271
社区成员
发帖
与我相关
我的任务
分享/// <summary>
/// 加密指定的文件,如果成功返回True,否则false
/// </summary>
/// <param name="filePath">要加密的文件路径</param>
/// <param name="outPath">加密后的文件输出路径</param>
public void EncryptFile(string filePath, string outPath)
{
bool isExist = File.Exists(filePath);
if (isExist)//如果存在
{
byte[] ivb = Encoding.ASCII.GetBytes(this.iv);
byte[] keyb = Encoding.ASCII.GetBytes(this.EncryptKey);
//得到要加密文件的字节流
FileStream fin = new FileStream(filePath, FileMode.Open, FileAccess.Read);
StreamReader reader = new StreamReader(fin, this.EncodingMode);
string dataStr = reader.ReadToEnd();
byte[] toEncrypt = this.EncodingMode.GetBytes(dataStr);
fin.Close();
FileStream fout = new FileStream(outPath, FileMode.Create, FileAccess.Write);
ICryptoTransform encryptor = des.CreateEncryptor(keyb, ivb);
CryptoStream csEncrypt = new CryptoStream(fout, encryptor, CryptoStreamMode.Write);
try
{
//加密得到的文件字节流
csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
csEncrypt.FlushFinalBlock();
}
catch (Exception err)
{
throw new ApplicationException(err.Message);
}
finally
{
try
{
fout.Close();
csEncrypt.Close();
}
catch
{
;
}
}
}
else
{
throw new FileNotFoundException("没有找到指定的文件");
}
} /// <summary>
/// 解密指定的文件
/// </summary>
/// <param name="filePath">要解密的文件路径</param>
/// <param name="outPath">解密后的文件输出路径</param>
public void DecryptFile(string filePath, string outPath)
{
bool isExist = File.Exists(filePath);
if (isExist)//如果存在
{
byte[] ivb = Encoding.ASCII.GetBytes(this.iv);
byte[] keyb = Encoding.ASCII.GetBytes(this.EncryptKey);
FileInfo file = new FileInfo(filePath);
byte[] deCrypted = new byte[file.Length];
//得到要解密文件的字节流
FileStream fin = new FileStream(filePath, FileMode.Open, FileAccess.Read);
//解密文件
try
{
ICryptoTransform decryptor = des.CreateDecryptor(keyb, ivb);
CryptoStream csDecrypt = new CryptoStream(fin, decryptor, CryptoStreamMode.Read);
csDecrypt.Read(deCrypted, 0, deCrypted.Length);
}
catch (Exception err)
{
throw new ApplicationException(err.Message);
}
finally
{
try
{
fin.Close();
}
catch { ;}
}
FileStream fout = new FileStream(outPath, FileMode.Create, FileAccess.Write);
fout.Write(deCrypted, 0, deCrypted.Length);
fout.Close();
}
else
{
throw new FileNotFoundException("指定的解密文件没有找到");
}
}