我正在尝试使用 .Net 对称加密 System.Security.Cryptography 来加密许多小文本 block 而不增加太多存储开销(处理时间并不重要,重要的是大小)。显而易见的方法是将它们全部塞在一起并将结果加密为一个大块,但这对我来说行不通。
背景是我正在开发一个工具,有人可以用它向我发送一个.docx word文档,这样我就可以在不知道内容的情况下解决结构中的问题。我打算通过对称加密每个 <w:t>
来做到这一点元素(可以是从单词的一部分到整个段落的任何内容)
我希望能够移动和/或删除此类文本元素,并且用户在我还给它时仍然能够解密文档,所以在我看来我别无选择,只能分别加密每个元素,但是对于 AES,如果您有数千个 block ,每个 block 只有几个字节,那么存储开销是巨大的。
最佳答案
对于您不想被阅读的任何信息,最好的加密是针对那些一开始就不存在的信息。
如果您只关心文档的结构,为什么不将其完全从传输中取出并用占位符替换它呢?
在客户端创建一个数据存储,其中包含与占位符关联的所有已删除内容(例如:{1}、{2}、{3} ... 等)
将结构和占位符(即
<w:t>{1}</w:t>
)发送给自己修复结构。
将固定结构返回给客户端,并在客户端通过用原始内容替换占位符将文档放回一起。
这样您就不会传输任何敏感信息(它保留在客户端,除了文档本身的结构外,任何信息都不会受到损害)。此外,您将获得更小的传输文件大小,因为大部分内容不会存在。
更好的是,您可以在将文件发送给您之前让客户看到该文件,这样他就可以验证所有敏感信息实际上是否已被删除。
关于c# - 对称加密加密很多小块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14561146/