开启智能安全搜索之旅:密文全文搜索技术的研究开发和应用

密文全文搜索技术的研究开发和应用

张留学[1]  张焕中[2]

1. 引言

信息技术的飞速发展,对信息的安全提出了很高的要求,如何实现信息安全,从信息的安全存储,安全传输到信息的安全检索,是云计算时代必须面临的挑战。虽然在全文检索技术和加密算法领域,已有很好的商业产品出现,但如何高效的检索这些加密的非结构化数据,还是一个亟待解决的难题。

多语种和密文全文搜索系统,构建一种基于语义树的全文搜索系统,在此基础上展开基于加密信息的全文搜索,在信息资源加密存储的前提下,通过对其构建密文全文索引,满足人们对于信息安全的需求。

人工智能可为许多行业带来巨大潜力,语义理解和智能搜索技术方兴未艾,借助独有的语义树索引技术实现一体化的多语种的自然语言理解服务,结合知识图谱实现智能化的搜索服务。

多语种和密文全文搜索系统旨在帮助企业更经济、更轻松地满足信息安全和信息搜索工作要求。统一的语义树索引处理技术,使其更易于多语种全文搜索服务的部署和使用,结合自主研发的密文索引算法实现信息的安全检索,以满足人们对于加密信息安全检索工作需求。结合分布式爬虫服务、文档信息索引服务实现成套的技术解决方案,并提供相关API接口和技术支持,帮助开发、部署和发展智能全文搜索解决方案,并将这些解决方案与其他业务和技术应用集成。

关键词

语义树索引 密文索引 zy6消息摘要算法 sm3 sha256 utf8 全文搜索 密文搜索 可加密的搜索机制

约定

分离码算法 flcode前端 浏览器和客户端

2. 背景

搜索引擎是信息时代的基础服务之一,搜索引擎服务的核心为全文检索。常用的全文检索提供基于关键词的查找。研究一种基于句子的查找是研发的动机之一。

全文检索主要分为两个部分:文章索引和查找。传统的文章索引主要指的是关键词的索引。简单来说就是,索引程序通过扫描文章,为每一个词建立一个索引,记录该词在文章中出现的次数和位置,查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。

全文检索系统是按照全文检索理论建立起来的,用于提供全文检索服务的软件系统。一般来说,全文检索需要具备建立索引和提供查询的基本功能。功能上,全文检索系统核心具有建立索引、处理查询返回结果集、增加索引、优化索引结构等等功能,外围则由各种不同应用具有的功能组成。结构上,全文检索系统核心具有索引引擎、查询引擎、文本分析引擎、对外接口等等,加上各种外围应用系统等等共同构成了全文检索系统。

全文信息搜索是信息时代的基本服务,文本信息检索是发展较快也较成熟的,其他的信息检索技术,往往也需要文本信息检索的支持。虽然搜索引擎已不仅仅局限于对文本进行检索,文本信息检索仍然是大部分搜索引擎的基础。常用的全文索引引擎有Lucence,其主要是通过分词技术,结合文档关键词倒排序表实现全文信息的索引。

在信息检索系统的具体实现中,往往需要快速地找到文档中所包含的关键词。相比文档来说,关键词的个数是较少的,因此,以关键词为核心对文档进行索引是更加可行的方法。这就是信息检索领域常用的倒排文档索引技术。倒排文档索引可以被看成一个链表数组,每个链表的表头包含关键词,其后续单元则包括所有包括这个关键词的文档标号,以及一些其他信息。这些信息可以是文档中该词的频率,也可以是文档中该词的位置等信息。

倒排文档索引的优势不仅在于关键词个数少带来的检索效率提高,还在于其特别易于同信息检索技术结合。在实际应用中,查询中所包含的关键词往往是很少的,完全不包含查询中的所有关键词的文档,一般来说是不会被列入结果集的。因此,以关键词为主键进行索引,只需要用查询中包括的关键词,进行几次简单的查询就能够找出所有可能的文档。

全文索引主要技术是倒排文档索引技术,实质是词或者字的索引,结合特定的词典形成特定的关键词索引。

分词也是全文索引的关键技术之一。分词就是将连续的字序列,按照一定的规范重新组合成词序列的过程。中文分词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂的多、困难的多。分词技术的主要目的是减小倒排序表的存储,提高索引的效率。缺点是需要针对性的给出不同字典和分词的方法,缺乏统一的尺度。

对于常用的全文搜索来说,基本的功能就是分词加上倒排序文档。搜索引擎的服务随着信息量的增大,检索和存储量大,存在索引时间长,搜索速度慢等问题。   

常规的全文检索对于分词技术和字典的依赖,使得全文搜索实施的难度加大。对于不同语种需要不同的字典和分词技术,对于同一语种不同专业的文档也需要不同的分词技术和字典,不同字典和分词技术也影响了系统的通用性。

传统的关键词搜索在语义理解方面支持存在极大的不足,这也是研发原因之一。研发支持所用语言的,实现智能和更懂你的搜索。

采用对文本信息进行特征序列的编码,形成相关的语义树,实质上提供提供一种基于语义树的索引方法和系统,不再依赖于分词、适合不同语种的全文搜索引擎,具有存储空间小,索引速度和查询速度快等特点。

3. 系统设计要求

多语种和密文全文搜索是一款基于语义树的全文检索服务系统,对语言的支持采用统一的标准,支持语言仅仅需要以下特点的:有最小的文字单元,语句可以切分。

1、多语种支持。采用语义树索引技术,支持不同语言文字的全文检索服务,具有占用少,搜索效率高的特点,搜索精准度高,具有上下文的联想提示功能。

2、密文搜索支持。支持加密文档的加密搜索服务。

3、智能语义理解。

和传统的关键词全文搜索对比:

1.  对于不同语言的支持,采用统一的算法实现,适合多语种的混合或者单一的查找;不论哪种语系,均可同样处理;

2.  无需字典、停止词表等等,没有重建索引的必要,无需担心新词的索引处理;

3.  对于密文检索的支持;支持全程安全处理,信息索引采用密文加散列的形式保存,通过索引不能还原信息,文档加密支持第三方,安全可靠;

4.  智能语义理解,具有语料的自动分析功能,能自动的提取语义单元,实现NLP和后续的关联查找;提供多语种的NLP服务,支持语义理解结合最小语义知识库,提供智能化的搜索服务。

 

4. 主要技术研发

4.1 关键技术

1、语义树全文搜索引擎技术

多语种和密文全文搜索关键技术包括:信息安全算法,信息搜索算法等。语义特征编码技术是全文搜索的核心算法,数字指纹算法在其中起到关键性的作用;密文搜索的关键算法是分离码算法。

2、基于路径散列的消息摘要技术

通过信息分组、路径散列计算、结果序列调和散列,结合输出字符串的设定,从而输出消息摘要。本技术可以扩展和衍生不同的摘要算法,不同的分组,不同的变换序列,不同的路径选择算法,不同的散列算法均可以产生不同的消息摘要。

3、语义联想记忆技术

通过语义标识ID的链式存储,构建语义上下关联的关系,实现对语句的上下文搜索,从而实现一定程度的语义会话功能。系统主要用于人工智能领域的语义理解、智能机器人的人机对话、自然语言的语句搜索。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Java中使用DES算法进行加密和解密的示例代码: ``` import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.StandardCharsets; import java.util.Base64; public class DESUtil { // 加密 public static String encrypt(String plaintext, String key) { try { Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "DES"); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec); byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8)); return Base64.getEncoder().encodeToString(encryptedBytes); } catch (Exception e) { e.printStackTrace(); return null; } } // 解密 public static String decrypt(String ciphertext, String key) { try { Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "DES"); cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(ciphertext)); return new String(decryptedBytes, StandardCharsets.UTF_8); } catch (Exception e) { e.printStackTrace(); return null; } } public static void main(String[] args) { String plaintext = "hello world"; String key = "12345678"; String ciphertext = encrypt(plaintext, key); System.out.println("加密后的密文:" + ciphertext); String decryptedText = decrypt(ciphertext, key); System.out.println("解密后的明文:" + decryptedText); } } ``` 上述代码中,加密和解密的核心部分都使用了Java中的Cipher类来完成。在加密和解密时,需要指定加密算法、工作模式和填充方式,这里使用了DES算法、ECB模式和PKCS5Padding填充方式。同时,还需要使用SecretKeySpec类来指定密钥,并通过init方法初始化Cipher对象。在加密时,将明文转换为字节数组,然后调用doFinal方法进行加密操作,最后使用Base64进行编码。在解密时,将密文使用Base64进行解码,然后调用doFinal方法进行解密操作,最后将解密后的字节数组转换为字符串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值