.net动态解密大文件



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

这些文件将被解密并通过令牌/票证机制下载。

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

我的问题是文件可能相当大,10gb是最大的文件大小的预期。

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

然而,我希望加密过程在飞行中工作-所以没有10g的解密文件,只有内存中的一块(我没有10g的ram用于此)。

有什么建议吗?

大多数加密是基于流的,所以这应该不是一个问题在所有 -只需运行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);
    }
}

然而,cStream可以用于任何基于 Stream的阅读。

最新更新