.net即时解密大文件

时间:2011-09-09 08:41:44

标签: .net encryption

我需要加密和存储上传的文件。

然后将通过令牌/ ticken机制解密和下载这些文件。

重要的是文件不是未加密的,系统管理员不应该随便访问它们。

我的问题是文件可能非常大,10 gigs大约是预期的最大文件大小。

加密过程可以根据需要进行。

但是我希望加密过程能够动态运行 - 所以没有10个gig解密文件,只有一大块内存(我没有10个ram for this)。

有任何建议如何实现这一目标?

1 个答案:

答案 0 :(得分:5)

大多数加密都是​​基于流的,所以根本不应该是 - 只需运行FileStream作为CryptoStream的输入,然后使用< em> 作为消耗数据的来源;可以是进程内处理,也可以是目标FileStream(在这种情况下,只需cryptoStream.CopyTo(outputFileStream)即可)。

如果我借用example from MSDN并编辑它以显示写二进制文件:

using(FileStream fStream = File.Open(FileName, FileMode.OpenOrCreate))
{
    // Create a new Rijndael object.
    Rijndael RijndaelAlg = Rijndael.Create();

    // Create a CryptoStream using the FileStream 
    // and the passed key and initialization vector (IV).
    using(CryptoStream cStream = new CryptoStream(fStream,
        RijndaelAlg.CreateDecryptor(Key, IV),
        CryptoStreamMode.Read))
    using(FileStream destination = File.Create(destinationPath))
    {
        cStream.CopyTo(destination);
    }
}

但是,cStream可用于任何 Stream的阅读。