【问题标题】:Encrypting a "stream" with AES使用 AES 加密“流”
【发布时间】:2016-11-10 21:54:03
【问题描述】:

我不断生成一个字符串,我需要将其写入本地文件(加密)。

由于我的应用程序中已经有一个 AES 库,我更愿意使用 AES - 如果可能的话。

方法 1:AES 的块大小为 16 字节,因此我需要在内存中缓冲 16 字节的数据,如果计算机崩溃,我可能会丢失。

方法 2:先将所有数据写入文件,并定期使用 AES-CBC 对整个文件进行加密。这样,用户可以在短时间内访问未加密的文件。

还有其他方法吗?

【问题讨论】:

  • 您预计会发生计算机崩溃吗?
  • 不幸的是,是的。运行应用程序的计算机通常无法正常关闭,而只是关机
  • AES 可用作流密码。起点:security.stackexchange.com/questions/65085/…
  • “用户可以访问未加密的文件”。嗯,当然。加密可防止中间人攻击。这不是短期的属性,这是根本性的。
  • 使用PKCS#7 padding,大多数实现都支持它,这一切都发生在函数中,即填充在加密时自动添加,在解密时删除。

标签: c++ encryption


【解决方案1】:

由于您可能无论如何都无法将 15 个字节写入磁盘,因此将数据填充到 4KB 的倍数(减去您需要的任何标头)并加密填充的数据。

【讨论】:

  • 为什么要填充到 4KB? AES 通常用PKCS#7 padding 填充。
  • @zaph:因为这是您的典型文件系统使用的(如果不是多个)。不要只关注加密部分,这里的问题是关于停电时的持久性。
  • 您是填充文本文件、二进制文件等还是让系统(您知道,操作系统)为您执行这些操作。而且它不仅仅是在磁盘上获取它,还需要创建目录条目,并且必须运行分配例程,刷新缓存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-12
相关资源
最近更新 更多