【问题标题】:Parse encrypted file with openssl使用 openssl 解析加密文件
【发布时间】:2014-04-22 08:29:15
【问题描述】:

我已经用 openssl 加密了一个文件,现在我想在不解密的情况下读取加密文件(实际上是解析那个文件)。基本上我想看看加密文件是否包含某个单词。我怎样才能做到这一点?我搜索了不同的博客和帖子,我能想出的唯一解决方案是解密文件(这会创建一个新的 READABLE 文件),在解密文件中搜索单词,然后将其删除。由于我不喜欢创建文件的解密副本然后将其删除,有什么方法可以在不解密的情况下解析/读取文件?我可能应该提到我正在使用 c++,但我认为这并不重要,对吗? 提前感谢您能给我的所有帮助。

【问题讨论】:

  • 我猜是使用 openSSL 库并解密到 RAM 而不是在文件中?

标签: c++ encryption openssl


【解决方案1】:

没有办法解析加密的文件(至少如果您使用的是合理的、不易破解的 - 在这种情况下,除了 Ceasar 密码或 XOR 密码之外的几乎所有东西都算作“不易破解”) .

换句话说,您将需要找到一种方法来解密内容 - 一种解决方案当然是解密到内存或stdout 并使用管道从文件中读取。

一个例子(这里写成一个大体思路,具体代码可能需要一些调整):

FILE* p = popen("openssl des3 -d -in myfile.encrypted", "r"); 
int ch;
while((ch = fgetc(p)) != EOF)
{
   ... process a character at a time ... 
}
pclose(p);

【讨论】:

    【解决方案2】:

    我已经用openssl加密了一个文件,现在我想在不解密的情况下读取加密文件(实际上是解析那个文件)...看看加密文件是否包含某个单词。

    为了保持语义安全,您需要使用同态加密方案。 OpenSSL 不支持这些密码系统,因此可能无法使用 OpenSSL。

    如果您不关心语义安全,那么您可以使用任意数量的方案。 Mats给了你几个。但它们会像筛子一样泄漏信息,并且使用频率分析等简单技术可能很容易破解。

    您可能想阅读完全同态加密和有点同态加密方案。如果方案是建立在格上的,那么 NTRU 库可能会提供方案或有用的原语。 Shoup 的NTL library 也可能提供方案或原语。 (我不知道,因为我不使用 FHE 或 SHE 方案)。

    您还应该与 security.stackexchange.com 或 crypto.stackexchange.com 上的人交谈。

    【讨论】:

      猜你喜欢
      • 2018-12-25
      • 2015-10-06
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 2018-11-28
      相关资源
      最近更新 更多