使用openssl分析加密文件

Parse encrypted file with openssl

本文关键字:加密 文件 openssl 使用      更新时间:2023-10-16

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

没有办法解析加密的文件(至少如果你使用的是合理的、不可破解的——在这种情况下,除了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);

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

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

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

您可能想了解完全同态加密和某种同态加密方案。如果该方案建立在晶格上,那么NTRU库可能会提供该方案或有用的基元。Shoup的NTL库也可能提供该方案或基元。(我不知道,因为我不使用FHE或SHE计划)。

您还应该与security.stackeexchange.com或crypt.stackexchange.com.

上的人员交谈