如何使用C#加速文件加密?

时间:2018-07-21 20:30:48

标签: c# cryptography filestream

我正在创建一个程序,该程序将使用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);
            }
        }
    }
}

0 个答案:

没有答案