我正在创建一个程序,该程序将使用System.Security.Cryptography
提供的过程对文件进行加密。为了简单起见,我仅提供以下加密方法的摘要。该过程以768MB的块(const int CHUNK_SIZE = 768 * 1024 * 1024
的形式读取文件,但是加密超过2GB的文件大约需要50秒。
是否有一种方法可以将这一过程分解为多个线程以更快地加密文件数据?也许每个线程都在哪里读取文件的下一部分?
CipherMode为CBC
,Padding为PKCS7
。
using (var rStream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
using (var wStream = new FileStream(path + DEFAULT_FILE_EXTENSION, FileMode.CreateNew, FileAccess.Write))
{
using (var cStream = new CryptoStream(wStream, transformEncrypt, CryptoStreamMode.Write))
{
var buffer = new byte[CHUNK_SIZE];
rStream.Seek(0, SeekOrigin.Begin);
int bytesRead = rStream.Read(buffer, 0, CHUNK_SIZE);
while (bytesRead > 0)
{
cStream.Write(buffer, 0, bytesRead);
bytesRead = rStream.Read(buffer, 0, bytesRead);
}
}
}
}