2012-02-12 10:46:16|?次阅读|上传:wustguangh【已有?条评论】发表评论
5、加密/加密文本文件
//加密文件
private static void EncryptData(String inName
, String outName
, byte[] desKey
, byte[] desIV)
{
//Create the file streams to handle the input and output files.
FileStream fin = new FileStream(inName
, FileMode.Open
, FileAccess.Read);
FileStream fout = new FileStream(outName
, FileMode.OpenOrCreate
, FileAccess.Write);
fout.SetLength(0);
//Create variables to help with read and write.
//This is intermediate storage for the encryption.
byte[] bin = new byte[100];
//This is the total number of bytes written.
long rdlen = 0;
//This is the total length of the input file.
long totlen = fin.Length;
//This is the number of bytes to be written at a time.
int len;
DES des = new DESCryptoServiceProvider();
CryptoStream encStream = new CryptoStream(fout
, des.CreateEncryptor(desKey, desIV)
, CryptoStreamMode.Write);
//Read from the input file, then encrypt and write to the output file.
while (rdlen < totlen)
{
len = fin.Read(bin, 0, 100);
encStream.Write(bin, 0, len);
rdlen = rdlen + len;
}
encStream.Close();
fout.Close();
fin.Close();
}
//解密文件
private static void DecryptData(String inName
, String outName
, byte[] desKey
, byte[] desIV)
{
//Create the file streams to handle the input and output files.
FileStream fin = new FileStream(inName
, FileMode.Open
, FileAccess.Read);
FileStream fout = new FileStream(outName
, FileMode.OpenOrCreate
, FileAccess.Write);
fout.SetLength(0);
//Create variables to help with read and write.
//This is intermediate storage for the encryption.
byte[] bin = new byte[100];
//This is the total number of bytes written.
long rdlen = 0;
//This is the total length of the input file.
long totlen = fin.Length;
//This is the number of bytes to be written at a time.
int len;
DES des = new DESCryptoServiceProvider();
CryptoStream encStream = new CryptoStream(
fout
, des.CreateDecryptor(desKey, desIV)
, CryptoStreamMode.Write);
//Read from the input file, then encrypt and write to the output file.
while (rdlen < totlen)
{
len = fin.Read(bin, 0, 100);
encStream.Write(bin, 0, len);
rdlen = rdlen + len;
}
encStream.Close();
fout.Close();
fin.Close();
}