.net即时解密大文件

Jon*_*nno 2 .net encryption

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

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

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

我的问题是文件可能非常大,10演出大约是预期的最大文件大小.

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

但是我希望加密过程能够在运行中运行 - 因此没有10个gig解密文件,只有一大块内存(我没有10个ram for this).

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

Mar*_*ell 5

大多数加密是基于流的,所以这不应该是一个问题,在所有 -只需运行FileStream作为输入CryptoStream,并使用为源动力,但是你正在消耗数据; 这可能是进程内处理,也可能是目的地FileStream(在这种情况下,cryptoStream.CopyTo(outputFileStream)应该就足够了).

如果我从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);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,cStream可以用于任何 Stream基于阅读.