c# - 对称加密加密很多小块

标签 c# .net encryption cryptography encryption-symmetric

我正在尝试使用 .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/

相关文章:

java - C# Task.ContinueWith() 与 Java?

c# - 如何自定义 DockPanel 大小的 : Create a GridSplitter,(C#、WPF)

c# - 有什么办法可以隔离线程的内存区域?

.net - 如何将 session 数据加密到 token 中以授权后续 Web 服务调用?

java - 将Java代码转换为NodeJS - 加密方法

javascript - 使用 Facebook 登录时获取邮件 ID?

c# - 为什么鼠标右键单击时拖放不起作用?

c# - 来自 FTPWebRequest.GetResponse() 方法的状态码

.net - Mono 多目标项目中的项目引用与文件链接

c - 我以前从未见过加密。这个 C 加密片段有什么作用?