我正在处理人工编写的文本文档,并且我执行基于字典的字符串匹配以在文档中查找特定的字符串。加密:字符串的散列与字符串的子字符串的散列相关联
出于安全原因,我无法以未加密的文本格式输入文档,而是以强烈的加密格式输入文档。我不能让在本机上工作的开发人员访问未加密的输入字符串,但他们可以访问匹配的字符串。
这样可以很清楚:
Dictionary = {"Apple", "Apple pie", "World War II"}
Document1 = "apple is my favorite fruit." -> Should match "apple"
Document2 = "apple pie was invented during world war II" -> Should match "apple pie" and "world war II"
所以匹配的字符串是不区分大小写的,只有匹配最长的发生(我使用的阿霍Corasick)。
我看到的选项是:
查找的加密函数F,其中F( “ABCD”)= F( “A”)+ F( “B”)+ F( “C”) + F(“D”)= F(“AB”)+ F(“CD”)。
将文档按空格分块,散列块和字典,然后查找相似性。 (复杂)
建立一个独立的单元负责加密和字符串匹配与混淆代码。 (最明显的方式)
由于我不擅长密码学,我可能会错过这里的东西。任何人都可以看到实现这一目标的更好方法?
文件加密时,我有点不清楚。它们在到达您的代码之前是否已加密,或者您是否对它们进行加密?如果他们已经加密,你有钥匙给他们吗? – 2011-02-10 15:41:47
该文件来自客户端,也在我们的控制之下。我们的目标是不让任何未加密的信息离开客户端机器,但在我们的服务器中执行此过程。 – parsa 2011-02-10 16:01:53