搞了三天尝试了n多方法之后终于搞定,代码如下:
using System;
using System.Text;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Security.Cryptography;
namespace VideoEncrypt
{
class Program
{
static void Main(string[] args)
{
RijndaelManaged rij = new RijndaelManaged();
rij.KeySize = 128;
string fp = @"E://friends//3//3.mkv";
string sPhysicalFilePath = @"E://friends//3//o3.mkv";
string fw = @"E://friends//3//dd3.mkv";
Console.WriteLine("Encrypting begin...");
encryption(rij, fp, sPhysicalFilePath);
decryption(rij,sPhysicalFilePath,fw);
}
//用于加密的函数
public static void encryption(RijndaelManaged rij,string readfile, string writefile)
{
try
{
byte[] key = rij.Key;
byte[] iv = rij.IV;
byte[] buffer = new byte[4096];
Rijndael crypt = Rijndael.Create();
ICryptoTransform transform = crypt.CreateEncryptor(key, iv);
//写进文件
FileStream fswrite = new FileStream(writefile, FileMode.Create);
CryptoStream cs = new CryptoStream(fswrite, transform, CryptoStreamMode.Write);
//打开文件
FileStream fsread = new FileStream(readfile, FileMode.Open);
int length;
//while ((length = fsread.ReadByte()) != -1)
//cs.WriteByte((byte)length);
while ((length = fsread.Read(buffer, 0, 4096)) > 0)
cs.Write(buffer, 0, (int)length);
fsread.Close();
cs.Close();
fswrite.Close();
Console.WriteLine("Encrypt Success");
}
catch (Exception e)
{
Console.WriteLine("Encrypt Faile"+e.ToString());
}
}
//用于解密的函数
public static void decryption(RijndaelManaged rij, string readfile, string writefile)
{
try
{
byte[] key = rij.Key;
byte[] iv = rij.IV;
byte[] buffer=new byte[4096];
Rijndael crypt = Rijndael.Create();
ICryptoTransform transform = crypt.CreateDecryptor(key, iv);
//读取加密后的文件
FileStream fsopen = new FileStream(readfile, FileMode.Open);
CryptoStream cs = new CryptoStream(fsopen, transform, CryptoStreamMode.Read);
//把解密后的结果写进文件
FileStream fswrite = new FileStream(writefile, FileMode.OpenOrCreate);
int length;
//while ((length = cs.ReadByte()) != -1)
//fswrite.WriteByte((byte)length);
while ((length = cs.Read(buffer, 0, 4096)) > 0)
fswrite.Write(buffer, 0, (int)length);
fswrite.Close();
cs.Close();
fsopen.Close();
Console.WriteLine("Decrypt Success");
}
catch (Exception e)
{
Console.WriteLine("Decrypt Failed"+e.ToString());
}
}
}
}