首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >加密文件的数据I/O操作

加密文件的数据I/O操作
EN

Cryptography用户
提问于 2014-09-10 17:16:25
回答 1查看 382关注 0票数 2

我需要在Linux系统上实现一种简单的方法来加密/解密数据,我希望得到您的反馈。基本上,我需要稍微改变一下函数的读写行为。

我检查了一些选项,如EncFS,但它们只在文件级别执行加密/解密(同时解密/加密整个文件)。但是,我需要一些细粒度级别的解决方案,比如块级。为了让事情变得更简单,我们只在文件的末尾追加数据,而不更改文件的现有数据。

以下面的用例为例:

  • 文件foo.txt为空
  • 将10个字节写入文件foo.txt
    • 加密输入(10个字节)并将其写入文件foo.txt。根据加密算法的不同,明文和密文大小可能不同。

  • 从文件foo.txt 读取6个字节
    • 你该如何处理这种情况?你应该解密所有你拥有的并且只提取6个字节吗?

我看到的是,您很可能还必须保存有关加密文件的元数据(块数等)。提前感谢!

EN

回答 1

Cryptography用户

回答已采纳

发布于 2014-09-10 18:14:14

Ad…

您所描述的与存储系统中的加密没有太大的不同,…只是你的“存储系统”是一个文件(foo.txt),而不是硬盘。现在,在一个完美的世界中,您可以用自己的密钥加密每个数据块(存储在foo.txt中),但这在您的情况下是非常不切实际的。在我看来,最明显的解决方案是使用“可调整的密码”或“可调整的窄块加密模式”。它们的设计是为了避免“每个存储的数据块都需要单独的密钥”(读:解决问题)。

因此,根据您的描述,我很可能选择“可调整的窄块加密模式”,如LRW ()、XEX ()或XTS。一个代表最常用实现之一的示例是AES-XTS。根据您的编码技能,将这样的解决方案集成到应用程序的CRUD功能中应该不会太困难。

但是,它取决于细节…

为了完整起见,我要提到还有其他选择,这也可能导致一种有价值的解决办法。根据你提供的信息,我只是提到了我个人倾向于使用的东西。但是,选择合适的解决方案将在很大程度上取决于您想要存储的数据类型、格式化方式、您期望的安全级别、假设的特定场景等等(始终检查潜在的攻击向量!)你必须评估和验证所有的细节,才能选择最适合你个人情况和需要的最优解决方案。

许多例子之一:如果文件大小和可用的硬件功能允许的话,您最好对整个文件进行加密/解密(使用AES-CBC或类似的方法),而不是对您计划创建、读取、更新和删除的单个数据进行加密。另一方面,如果我们谈论的是一个文件,该文件必须包含数十万个单独的数据块/条目,因此它必然会增长到文件大小的几千兆字节以上,那么将该文件加载到系统内存中,以便与包含的数据进行斗争,将倾向于有点…。(让我们称之为)“非最佳”。

票数 4
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/19066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档