我需要加密和存储上传的文件。
然后,这些文件将通过令牌/滴答机制被解密和下载。
重要的是,这些文件不能未加密,系统管理员不能随意访问它们。
我的问题是文件可能非常大,10 is大约是预期的最大文件大小。
加密过程可以根据需要花费多长时间。
然而,我希望加密过程在飞行中工作-所以没有10G的解密文件,只有它在内存中的一大块(我没有10G的ram用于此)。
如何实现这一点有什么建议吗?
发布于 2011-09-09 16:46:53
大多数加密都是基于流的,所以这根本不是问题-只需将FileStream
作为CryptoStream
的输入运行,并将其用作您正在使用的数据的源;这可以是正在进行的处理,也可以是目标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
-based。
https://stackoverflow.com/questions/7359128
复制相似问题