我的问题与如何在3D地形上存储大量信息有关。这些信息应该是秘密的,因为它们非常笨重也应该被压缩。 我选择了文件存储,现在我想知道加密/压缩(或压缩/加密)对象数据到文件的最佳实践。
我甚至不知道写入文件然后压缩和加密它是否更好,或者是否在数据流上工作然后写入文件。
任何建议都将不胜感激!
答案 0 :(得分:5)
我甚至不知道写入文件然后压缩和加密它是否更好,或者是否在数据流上工作然后写入文件。
“更好”是无法衡量的。内存中压缩和加密可能比直接写入文件更快,但如果数据大于内存中的数据,则很容易证明是麻烦的。
正如你想要将最终结果存储在磁盘上一样,我会像这样接近它(首先压缩,然后加密,然后写入磁盘):
using (var compressionStream = new CompressionStream(rawData))
{
using (var encryptionStream = new EncryptionStream(compressionStream))
{
using (var fileStream = new FileStream("outputfile"))
{
encryptionStream.CopyTo(fileStream);
}
}
}
CompressionStream
和EncryptionStream
的实现当然取决于您使用的API。
答案 1 :(得分:3)
压缩和加密是有趣的野兽 - 加密行为使比特随机化,这使得GZip压缩变得更加困难。
请参阅此文件中的注释。 https://serverfault.com/questions/17855/can-i-compress-an-encrypted-file
按照CodeCaster的说法按顺序说将生成最小的文件,因为文件在加密之前已经被压缩了。
还要考虑文件大小以及存储它的磁盘类型,以及解密和解压缩的计算机类型。如果要将其重新传输到内存中,您可能会发现在某些情况下内存不足,除非您将数据流放入缓冲区或中断文件。