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(); }