Lucene.NET加密全文搜索

时间:2017-06-07 18:20:16

标签: .net sql-server encryption lucene.net

所以基本情况是我必须在SQL Server数据库中存储一些文本信息。问题是文本必须加密和可搜索。 我已经对这个主题做了一些研究,似乎这还不可行(据我所知,这种加密技术,同态加密还不够成熟,不能用于现实生活中)。

我想出了一个主意,但我不确定它是否可行。有人可以建议吗?

所以我知道Lucene.NET可以用于全文搜索。我想做的是使用Lucene.NET索引纯文本,存储索引而不是纯文本,将加密值存储在SQL Server中,然后搜索Lucene索引并从Lucene索引返回记录的ID ,从SQL Server中读取该特定行,然后解密数据。

这可能吗?我可以使用Lucene索引某些内容,然后不存储索引数据吗?

2 个答案:

答案 0 :(得分:2)

不确定我理解您的要求的细微差别......但听起来这些条款可能很简单,但完整的字符串需要加密?

如果是这样,我多次使用的模式是使用Field.STORE.NO索引字段,然后将内容放在二进制字段中。我已经用它来创建一个文档存储,其中文档是键入的结构化对象。定义要索引的属性,然后将对象序列化为压缩的json到二进制字段。

在您的情况下,二进制文件将是您通过任何方式加密的字符串。

如果文本使用向量索引(这意味着包含术语位置),则可能(大多数情况下)重新构建文本,这是slop查询所必需的(即" fred wilma" 〜5 =" fred"在" wilma")的5个术语内。 "大多"因为没有停止的话。如果你不需要slop,那么你可以不用索引。

稍加注意(可能是自定义分析器和查询解析器),您也可以加密这些术语。

答案 1 :(得分:0)

这并不容易。您所描述的内容很少在商业数据库中实现,尽管该领域有一些理论成果。我建议你去google scholar并开始寻找有关这个问题的论文。

以下是一些可以帮助您入门的参考资料: