CN113688410A - 一种数据检索方法、装置、fpga及介质 - Google Patents
一种数据检索方法、装置、fpga及介质 Download PDFInfo
- Publication number
- CN113688410A CN113688410A CN202110960936.9A CN202110960936A CN113688410A CN 113688410 A CN113688410 A CN 113688410A CN 202110960936 A CN202110960936 A CN 202110960936A CN 113688410 A CN113688410 A CN 113688410A
- Authority
- CN
- China
- Prior art keywords
- ciphertext
- address
- keyword
- retrieved
- cam unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000004590 computer program Methods 0.000 claims description 12
- 230000009977 dual effect Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种数据检索方法、装置、FPGA、介质,该方法包括:获取与FPGA相连接的计算机设备下发的读请求;将读请求转换成检索指令,并通过FPGA上预先构建的各个CAM单元并行执行检索指令;根据CAM单元输出的偏移地址和输出偏移地址的CAM单元的标识确定出待对应的待检索密文关键词写入地址;将待检索密文关键词写入地址发送给计算机设备,以便计算机设备从密文关键词索引表中与待检索密文关键词写入地址对应的数据行中读出待检索密文关键词对应的完整版密文存储地址,以从待检索密文关键词对应的完整版密文存储地址下读取出待检索密文,得到密文检索结果。这样能够提高密文检索效率,进而提高整个***的运行效率。
Description
技术领域
本申请涉及数据处理技术领域,特别涉及一种数据检索方法、装置、FPGA、介质。
背景技术
在数据***的当今社会,数据存储和搜索是最重要的问题之一。云存储作为一种全新的信息存储技术,因其便捷的存储功能使之迅速成为目前主流的数据存储传输方式。但随之而来的问题是,大多数由用户存储的数据总是以明文的方式出现,那么这部分未被加密数据,云终端的人员能够随意检查、更改,间接从服务器平台删除,一旦发生看恶意的操作,这种开放的数据办理形式会导致用户的重大损失,同时,如果只是对数据加密后上传,虽然数据的安全性可以得到保障,但若想对已经加密的数据进行搜索则很难进行,因为云存储服务器上的是加密后的数据,无法直接操作。
为了解决上述问题,需要实现在加密数据中进行搜索,也即实现可搜索加密,可搜索加密是一种支持用户在密文上进行关键字查找的密码学原语,能够代表授权数据用户搜索加密数据,在保护存储在不可信第三方实体上的数据安全性的基础上,利用关键词对密文文件执行检索操作。但是现有技术中,相比于明文检索,可搜索加密需要进行更多的计算和数据比对,这极大地降低了***的检索效率,尤其是在数据文件变得越来越大时。
发明内容
有鉴于此,本申请的目的在于提供一种数据检索方法、装置、FPGA、介质,能够提高密文检索效率,进而提高整个***的运行效率。其具体方案如下:
第一方面,本申请公开了一种数据检索方法,应用于FPGA,包括:
获取与所述FPGA相连接的计算机设备下发的读请求,其中,所述读请求中包括待检索密文关键词;
将所述读请求转换成检索指令,并通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,其中,所述检索指令中包括所述待检索密文关键词,所述CAM单元为将密文关键词索引表中的密文关键词按照预设存储方式存储到RAM中得到的,所述密文关键词索引表中包括密文关键词及各个密文关键词对应的完整版密文存储地址;
根据所述CAM单元输出的偏移地址和输出所述偏移地址的所述CAM单元的标识确定出所述待检索密文关键词对应的待检索密文关键词写入地址,其中,所述待检索密文关键词写入地址表示所述待检索密文关键词在所述密文关键词索引表中的位置;
将所述待检索密文关键词写入地址发送给所述计算机设备,以便所述计算机设备从所述密文关键词索引表中与所述待检索密文关键词写入地址对应的数据行中读出所述待检索密文关键词对应的完整版密文存储地址,以从所述待检索密文关键词对应的完整版密文存储地址下读取出待检索密文,得到密文检索结果。
可选地,所述将所述待检索密文关键词写入地址发送给所述计算机设备,包括:
将所述待检索密文关键词写入地址转换成所述计算机设备的***总线格式,并将转换之后的待检索密文关键词写入地址发送给所述计算机设备。
可选地,所述获取与所述FPGA相连接的计算机设备下发的读请求之前,还包括:
接收目标BLOCK RAM的配置信息,其中,所述目标BLOCK RAM的数量为根据所述密文关键词索引表确定出的;
根据所述配置信息对所述目标BLOCK RAM进行配置,以将所述目标BLOCK RAM配置为双端口模式,其中,所述目标BLOCK RAM的第一端口为单数据位宽端口,所述目标BLOCKRAM的第二端口的数据位宽为所述密文关键词索引表中密文关键词的数据位数,一个所述目标BLOCK RAM作为一个所述CAM单元。
可选地,所述根据所述配置信息对所述目标BLOCK RAM进行配置,以将所述目标BLOCK RAM配置为双端口模式之后,还包括:
接收所述计算机设备下发的写请求,其中,所述写请求中包括待写入密文关键词和待写入密文关键词写入地址;
根据所述待写入密文关键词写入地址确定出用于存储所述待写入密文关键词的目标CAM单元和所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址;
通过所述目标CAM单元的第一端口将所述待写入密文关键词和所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址组合作为目标地址,并在所述目标地址写1。
可选地,所述根据所述待写入密文关键词写入地址确定出用于存储所述待写入密文关键词的目标CAM单元和所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址,包括:
确定所述待写入密文关键词写入地址与所述CAM单元中的存储列数之间的比值,其中,所述比值包括整数和余数;
将各个所述CAM单元中标识与所述整数相同的作为所述目标CAM单元,并将所述余数作为所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址。
可选地,所述根据所述配置信息对所述目标BLOCK RAM进行配置,以将所述目标BLOCK RAM配置为双端口模式之后,还包括:
获取所述计算机设备发送的擦除请求,其中,所述擦除请求中包括待擦除CAM单元的标识;
将所述待擦除CAM单元中的各个存储位置上的1均置为0。
可选地,所述将所述读请求转换成检索指令,并通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,包括:
将所述读请求转换成检索指令;
通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,以判断各个所述CAM单元中存储行号为所述待检索密文关键词的存储地址上的数据是否为1;
如果存在所述CAM单元中存储行号为所述待检索密文关键词的存储地址上的数据为1,则通过该CAM单元将所述存储地址的存储列号作为所述偏移地址输出。
第二方面,本申请公开了一种数据检索装置,应用于FPGA,包括:
指令获取模块,用于获取与所述FPGA相连接的计算机设备下发的读请求,其中,所述读请求中包括待检索密文关键词;
指令执行模块,用于将所述读请求转换成检索指令,并通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,其中,所述检索指令中包括所述待检索密文关键词,所述CAM单元为将密文关键词索引表中的密文关键词按照预设存储方式存储到RAM中得到的,所述密文关键词索引表中包括密文关键词及各个密文关键词对应的完整版密文存储地址;
检索结果处理模块,用于根据所述CAM单元输出的偏移地址和输出所述偏移地址的所述CAM单元的标识确定出所述待检索密文关键词对应的待检索密文关键词写入地址,其中,所述待检索密文关键词写入地址表示所述待检索密文关键词在所述密文关键词索引表中的位置;
数据发送模块,用于将所述待检索密文关键词写入地址发送给所述计算机设备,以便所述计算机设备从所述密文关键词索引表中与所述待检索密文关键词写入地址对应的数据行中读出所述待检索密文关键词对应的完整版密文存储地址,以从所述待检索密文关键词对应的完整版密文存储地址下读取出待检索密文,得到密文检索结果。
第三方面,本申请公开了一种FPGA,包括:
存储单元和处理单元;
其中,所述存储单元,用于存储计算机程序;
所述处理单元,用于执行所述计算机程序,以实现前述公开的数据检索方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的数据检索方法。
可见,本申请公开了一种数据检索方法,应用于FPGA,首先获取与所述FPGA相连接的计算机设备下发的读请求,其中,所述读请求中包括待检索密文关键词。然后将所述读请求转换成检索指令,并通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,其中,所述检索指令中包括所述待检索密文关键词,所述CAM单元为将密文关键词索引表中的密文关键词按照预设存储方式存储到RAM中得到的,所述密文关键词索引表中包括密文关键词及各个密文关键词对应的完整版密文存储地址。再根据所述CAM单元输出的偏移地址和输出所述偏移地址的所述CAM单元的标识确定出所述待检索密文关键词对应的待检索密文关键词写入地址,其中,所述待检索密文关键词写入地址表示所述待检索密文关键词在所述密文关键词索引表中的位置。然后便可以将所述待检索密文关键词写入地址发送给所述计算机设备,以便所述计算机设备从所述密文关键词索引表中与所述待检索密文关键词写入地址对应的数据行中读出所述待检索密文关键词对应的完整版密文存储地址,以从所述待检索密文关键词对应的完整版密文存储地址下读取出待检索密文,得到密文检索结果。由此可见,本申请中将密文关键词索引表存储到FPGA中,形成CAM单元,这样需要进行密文关键词检索的时候,便可以利用FPGA中的多个CAM单元并行执行对应的检索指令,这样相比于现有技术中,当数据库变得很大时,密文关键词索引表也会变得很大,直接使用CPU在密文关键词索引表中检索时,CPU需要从密文关键词索引表的第一组开始向后依次对比搜索这样的串行执行过程会消耗大量的时间来说,本申请中使用FPGA时各个CAM单元并行执行检索指令,一个时钟周期就能得到待检测密文关键词对应的待检索密文关键词写入地址,从而得到完整版密文存储地址,从而提高密文检索效率,进而提高整个***的运行效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种数据检索方法流程图;
图2为本申请公开的一种具体的数据检索方法流程图;
图3为本申请公开的一种具体的BLOCK RAM示意图;
图4为本申请公开的一种具体的独热码对照表;
图5为本申请公开的一种具体的密文检索整体框图;
图6为本申请公开的一种数据检索装置结构示意图;
图7为本申请公开的一种FPGA结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1所示,本申请实施例公开了一种数据检索方法,应用于FPGA,该方法包括:
步骤S11:获取与所述FPGA相连接的计算机设备下发的读请求,其中,所述读请求中包括待检索密文关键词。
在具体的实施过程中,所述FPGA(Field-Programmable Gate Array,现场可编程门阵列)与计算机设备相连接,可以执行所述计算机设备下发的相关请求,其中,所述FPGA与所述计算机设备之间可以通过AXI(Advanced eXtensible Interface)总线相连接。
用户可以向所述计算机设备触发密文的读请求等,相应地,所述计算机设备在接收到所述读请求之后,便需要将所述读请求发送给所述FPGA,相应地,所述FPGA便需要接收所述读请求,其中,所述读请求中包括待检索密文关键词,所述待检测密文关键词为N位的数据。
步骤S12:将所述读请求转换成检索指令,并通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,其中,所述检索指令中包括所述待检索密文关键词,所述CAM单元为将密文关键词索引表中的密文关键词按照预设存储方式存储到RAM中得到的,所述密文关键词索引表中包括密文关键词及各个密文关键词对应的完整版密文存储地址。
在接收到所述读请求时,需要将所述读请求转换成检索指令,并通过所述FPGA上的预先构建的CAM(Content Addressable Memory,内容可寻址存储器)单元并行执行所述检索指令,其中,所述检索指令中包括所述待检测密文关键词,而所述CAM单元为将密文关键词索引表中的密文关键词按照预设存储方式存储到所述FPGA上的RAM(Random AccessMemory,随机存取存储器)中得到的,所述密文关键词索引表中包括密文关键词及各个所述密文关键词对应的完整版密文存储地址。
步骤S13:根据所述CAM单元输出的偏移地址和输出所述偏移地址的所述CAM单元的标识确定出所述待检索密文关键词对应的待检索密文关键词写入地址,其中,所述待检索密文关键词写入地址表示所述待检索密文关键词在所述密文关键词索引表中的位置。
所述CAM单元并行执行所述检索指令之后,检索到的CAM单元便会输出待检测密文关键词在该CAM单元内的偏移地址,然后便需要根据所述CAM单元输出的偏移地址和输出所述偏移地址的所述CAM单元的标识确定出所述待检测密文关键词对应的待检索密文关键词写入地址,这里所说的待检索密文关键词写入地址表示所述待检索密文关键词在所述密文关键词索引表中的位置。
步骤S14:将所述待检索密文关键词写入地址发送给所述计算机设备,以便所述计算机设备从所述密文关键词索引表中与所述待检索密文关键词写入地址对应的数据行中读出所述待检索密文关键词对应的完整版密文存储地址,以从所述待检索密文关键词对应的完整版密文存储地址下读取出待检索密文,得到密文检索结果。
在得到所述待检索密文关键词写入地址之后,由于所述密文关键词索引表存储在述计算机设备中,所以还需要将所述待检索密文关键词写入地址发送到所述计算机设备中,所述计算机设备在接收到所述待检索密文关键词写入地址之后,便可以从所述密文关键词索引表中与所述待检索密文关键词写入地址对应的数据行中直接读取出所述待检测密文关键词对应的完整版密文存储地址,然后便可以从所述待检索密文关键词对应的完整版密文存储地址下读取出待检索密文,得到密文检索结果。
其中,将所述待检索密文关键词写入地址发送给所述计算机设备,包括:将所述待检索密文关键词写入地址转换成所述计算机设备的***总线格式,并将转换之后的待检索密文关键词写入地址发送给所述计算机设备。
由于传输到所述计算机设备中的数据需要满足所述计算机设备的***总线格式,所以在所述FPGA将所述待检索密文关键词写入地址传输到所述计算机设备之前,还需要将所述待检索密文关键词写入地址转换成所述计算机设备的***总线格式,然后再将转换之后的待检索密文关键词写入地址传输到所述计算机设备中。
可见,本申请公开了一种数据检索方法,应用于FPGA,首先获取与所述FPGA相连接的计算机设备下发的读请求,其中,所述读请求中包括待检索密文关键词。然后将所述读请求转换成检索指令,并通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,其中,所述检索指令中包括所述待检索密文关键词,所述CAM单元为将密文关键词索引表中的密文关键词按照预设存储方式存储到RAM中得到的,所述密文关键词索引表中包括密文关键词及各个密文关键词对应的完整版密文存储地址。再根据所述CAM单元输出的偏移地址和输出所述偏移地址的所述CAM单元的标识确定出所述待检索密文关键词对应的待检索密文关键词写入地址,其中,所述待检索密文关键词写入地址表示所述待检索密文关键词在所述密文关键词索引表中的位置。然后便可以将所述待检索密文关键词写入地址发送给所述计算机设备,以便所述计算机设备从所述密文关键词索引表中与所述待检索密文关键词写入地址对应的数据行中读出所述待检索密文关键词对应的完整版密文存储地址,以从所述待检索密文关键词对应的完整版密文存储地址下读取出待检索密文,得到密文检索结果。由此可见,本申请中将密文关键词索引表存储到FPGA中,形成CAM单元,这样需要进行密文关键词检索的时候,便可以利用FPGA中的多个CAM单元并行执行对应的检索指令,这样相比于现有技术中,当数据库变得很大时,密文关键词索引表也会变得很大,直接使用CPU在密文关键词索引表中检索时,CPU需要从密文关键词索引表的第一组开始向后依次对比搜索这样的串行执行过程会消耗大量的时间来说,本申请中使用FPGA时各个CAM单元并行执行检索指令,一个时钟周期就能得到待检测密文关键词对应的待检索密文关键词写入地址,从而得到完整版密文存储地址,从而提高密文检索效率,进而提高整个***的运行效率。
参见图2所示,获取与所述FPGA相连接的计算机设备下发的读请求之前,还包括:
步骤S21:接收目标BLOCK RAM的配置信息,其中,所述目标BLOCK RAM的数量为根据所述密文关键词索引表确定出的。
首先需要对所述FPGA中的RAM进行配置。具体的,需要根据所述密文关键词索引表确定出需要实例化的BLOCK RAM的数量,例如,所述密文关键词索引表中的密文关键词的数据位宽为N位,数据行数为M,每个数据行包括一个密文关键词和该密文关键词对应的完整版密文存储地址,此时单数据端口的所需的深度为N*M,进行以下计算K=N*M/L,K值向上取整作为所需的目标BLOCK RAM的个数,L表示一个目标BLOCK RAM的大小。
在确定出所述目标BLOCK RAM的数量之后,便需要输入配置信息对所述目标BLOCKRAM进行配置,相应地,所述FPGA便需要接收所述目标BLOCK RAM的配置信息。
步骤S22:根据所述配置信息对所述目标BLOCK RAM进行配置,以将所述目标BLOCKRAM配置为双端口模式,其中,所述目标BLOCK RAM的第一端口为单数据位宽端口,所述目标BLOCK RAM的第二端口的数据位宽为所述密文关键词索引表中密文关键词的数据位数,一个所述目标BLOCK RAM作为一个所述CAM单元。
在接收到所述配置信息之后,利用所述配置信息对各个所述目标BLOCK RAM进行配置,以便将各个所述目标BLOCK RAM均配置为双端口模式,其中,所述目标BLOCK RAM的第一端口为单数据位宽端口,所述目标BLOCK RAM的第二端口的数据位宽为所述密文关键词索引表中密文关键词的数据位数,一个所述目标BLOCK RAM作为一个所述CAM单元。例如,将各个所述目标BLOCK RAM设置为端口A和端口B,端口A和B相互独立,都有独自的时钟输入和控制信号,端口数据位宽不同,均可进行独立的读或写操作。固定端口A为单数据位宽口,深度为L,也即,端口A的深度为一个目标BLOCK RAM的大小,端口B的数据位宽为N,也即,端口B的数据位宽为密文关键词的数据位宽,深度为L/N。按照上述同样的方法总共例化j个目标BLOCK RAM。
步骤S23:接收所述计算机设备下发的写请求,其中,所述写请求中包括待写入密文关键词和待写入密文关键词写入地址。
所述FPGA还可以接收所述计算机设备下发的写请求,其中,所述写请求中包括待写入密文关键词和待写入密文关键词写入地址,所述待写入密文关键词写入地址表示所述待写入密文关键词在所述密文关键词索引表中的数据行数。
步骤S24:根据所述待写入密文关键词写入地址确定出用于存储所述待写入密文关键词的目标CAM单元和所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址。
接着便需要根据所述待写入密文关键词写入地址确定出用于存储所述待写入密文关键词的目标CAM单元和所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址。
具体的,就是确定所述待写入密文关键词写入地址与所述CAM单元中的存储列数之间的比值,其中,所述比值包括整数和余数;将各个所述CAM单元中标识与所述整数相同的作为所述目标CAM单元,并将所述余数作为所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址。
一个目标BLOCK RAM作为一个所述CAM单元,每个BLOCK RAM中包括的存储列数相同,例如,可以为16列,则确定所述待写入密文关键词写入地址与16之间的比值,其中,所述比值包括整数和余数;将各个所述CAM单元中标识与所述整数相同的作为所述目标CAM单元,并将所述余数作为所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址。例如,所述待写入密文关键词写入地址为500,每个BLOCK RAM中包括的存储列数均为16列,则将标识为31的CAM单元确定为目标CAM单元,将目标CAM单元中的第4存储列确定为偏移地址。
步骤S25:通过所述目标CAM单元的第一端口将所述待写入密文关键词和所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址组合作为目标地址,并在所述目标地址写1。
接着便可以通过所述目标CAM单元的第一端口将所述待写入密文关键词和所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址组合作为目标地址,并在所述目标地址写1。
输入信号包括N位的待写入密文关键词DATA_IN,log2(L/N)位的偏移ADDR,控制信号WRITE/ERASE和时钟信号,其中,WRITE/ERASE信号连接到CAM单元的写使能端。N位待写入密文关键词DATA_IN加上log2(L/N)位地址组合成目标地址ADDRA,来访问L个位单元中的某一个。参见图3所示,通过端口A向CAM单元的第2个存储列(地址0010)写入待写入密文关键词“00000111”(即二进制7)时,目标地址为12位地址,由高8位数据“00000111”和低4位“0010”组合而成。WRITE/ERASE置1,则实际上将“1”写入地址为072H单元中。CAM单元写入时,并不是真的把8位待写入密文关键词存储起来,而是在8位数据所对应的存储行做一记录。
在实际实施过程中,根据所述配置信息对所述目标BLOCK RAM进行配置,以将所述目标BLOCK RAM配置为双端口模式之后,还包括:获取所述计算机设备发送的擦除请求,其中,所述擦除请求中包括待擦除CAM单元的标识;将所述待擦除CAM单元中的各个存储位置上的1均置为0。
也即,若需要将某个CAM单元擦除,由于擦除之前并不清楚哪个存储行有记录,故需要将该CAM单元中的所有存储位置上的1都清除。
步骤S26:获取与所述FPGA相连接的计算机设备下发的读请求,其中,所述读请求中包括待检索密文关键词。
步骤S27:将所述读请求转换成检索指令,并通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,其中,所述检索指令中包括所述待检索密文关键词,所述CAM单元为将密文关键词索引表中的密文关键词按照预设存储方式存储到RAM中得到的,所述密文关键词索引表中包括密文关键词及各个密文关键词对应的完整版密文存储地址。
在获取到所述读请求之后,还需要将所述读请求转换成检索指令,然后通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,以判断各个所述CAM单元中存储行号为所述待检索密文关键词的存储地址上的数据是否为1;如果存在所述CAM单元中存储行号为所述待检索密文关键词的存储地址上的数据为1,则通过该CAM单元将所述存储地址的存储列号作为所述偏移地址输出。
步骤S28:根据所述CAM单元输出的偏移地址和输出所述偏移地址的所述CAM单元的标识确定出所述待检索密文关键词对应的待检索密文关键词写入地址,其中,所述待检索密文关键词写入地址表示所述待检索密文关键词在所述密文关键词索引表中的位置。
步骤S29:将所述待检索密文关键词写入地址发送给所述计算机设备,以便所述计算机设备从所述密文关键词索引表中与所述待检索密文关键词写入地址对应的数据行中读出所述待检索密文关键词对应的完整版密文存储地址,以从所述待检索密文关键词对应的完整版密文存储地址下读取出待检索密文,得到密文检索结果。
步骤S28和步骤S29的具体实施过程可以参考前述实施例中公开的内容,在此不作具体限定。
在上述例子中,例如要搜索查看是否有待检索密文关键词“0000101”(即二进制5)时,将5给到端口B的地址线上,此时端口B的输出端口输出的值为16’b0000_0000_0000_0000,此时即认为没有搜索匹配对应的数据;要搜索查看是否有待检索密文关键词“0000111”(即二进制7)时,将7给到端口B的地址线上,此时端口B的输出端口输出的值为16’b0000_0000_0000_0010,此时即认为搜索到了对应的数据。通过上面的例子可以看到,进行数据搜索的返回结果中只有一个bit位有效,这种便是独热码。当端口B的输出端口输出的值不全部为0时,即认为搜索到了数据,此时将匹配成功信号MATCH_OK置为1,同时将返回的独热码转换为常用的二进制编码地址作为偏移地址,具体对照表参考图4所示。
参见图5所示,为密文检索整体框图。图中的CPU代表前述的计算机设备,所述计算机设备与所述FPGA之间通过AXI总线相连接,所述FPGA中包括密文关键词查询预处理部分,负责前述的读请求转换为检索指令,以及写请求时候的地址转换等,还包括多个CAM单元,可并行执行检索指令,还包括生成查询结果部分,用于将确定出的待检索密文关键词写入地址转换成计算机设备的总线格式。
参见图6所示,本申请实施例公开了一种数据检索装置,应用于FPGA,包括:
指令获取模块11,用于获取与所述FPGA相连接的计算机设备下发的读请求,其中,所述读请求中包括待检索密文关键词;
指令执行模块12,用于将所述读请求转换成检索指令,并通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,其中,所述检索指令中包括所述待检索密文关键词,所述CAM单元为将密文关键词索引表中的密文关键词按照预设存储方式存储到RAM中得到的,所述密文关键词索引表中包括密文关键词及各个密文关键词对应的完整版密文存储地址;
检索结果处理模块13,用于根据所述CAM单元输出的偏移地址和输出所述偏移地址的所述CAM单元的标识确定出所述待检索密文关键词对应的待检索密文关键词写入地址,其中,所述待检索密文关键词写入地址表示所述待检索密文关键词在所述密文关键词索引表中的位置;
数据发送模块14,用于将所述待检索密文关键词写入地址发送给所述计算机设备,以便所述计算机设备从所述密文关键词索引表中与所述待检索密文关键词写入地址对应的数据行中读出所述待检索密文关键词对应的完整版密文存储地址,以从所述待检索密文关键词对应的完整版密文存储地址下读取出待检索密文,得到密文检索结果。
可见,本申请公开了一种数据检索方法,应用于FPGA,首先获取与所述FPGA相连接的计算机设备下发的读请求,其中,所述读请求中包括待检索密文关键词。然后将所述读请求转换成检索指令,并通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,其中,所述检索指令中包括所述待检索密文关键词,所述CAM单元为将密文关键词索引表中的密文关键词按照预设存储方式存储到RAM中得到的,所述密文关键词索引表中包括密文关键词及各个密文关键词对应的完整版密文存储地址。再根据所述CAM单元输出的偏移地址和输出所述偏移地址的所述CAM单元的标识确定出所述待检索密文关键词对应的待检索密文关键词写入地址,其中,所述待检索密文关键词写入地址表示所述待检索密文关键词在所述密文关键词索引表中的位置。然后便可以将所述待检索密文关键词写入地址发送给所述计算机设备,以便所述计算机设备从所述密文关键词索引表中与所述待检索密文关键词写入地址对应的数据行中读出所述待检索密文关键词对应的完整版密文存储地址,以从所述待检索密文关键词对应的完整版密文存储地址下读取出待检索密文,得到密文检索结果。由此可见,本申请中将密文关键词索引表存储到FPGA中,形成CAM单元,这样需要进行密文关键词检索的时候,便可以利用FPGA中的多个CAM单元并行执行对应的检索指令,这样相比于现有技术中,当数据库变得很大时,密文关键词索引表也会变得很大,直接使用CPU在密文关键词索引表中检索时,CPU需要从密文关键词索引表的第一组开始向后依次对比搜索这样的串行执行过程会消耗大量的时间来说,本申请中使用FPGA时各个CAM单元并行执行检索指令,一个时钟周期就能得到待检测密文关键词对应的待检索密文关键词写入地址,从而得到完整版密文存储地址,从而提高密文检索效率,进而提高整个***的运行效率。
在具体的实施过程中,所述数据发送模块14,用于:
将所述待检索密文关键词写入地址转换成所述计算机设备的***总线格式,并将转换之后的待检索密文关键词写入地址发送给所述计算机设备。
在具体的实施过程中,还包括:
配置模块,用于接收目标BLOCK RAM的配置信息,其中,所述目标BLOCK RAM的数量为根据所述密文关键词索引表确定出的;根据所述配置信息对所述目标BLOCK RAM进行配置,以将所述目标BLOCK RAM配置为双端口模式,其中,所述目标BLOCK RAM的第一端口为单数据位宽端口,所述目标BLOCK RAM的第二端口的数据位宽为所述密文关键词索引表中密文关键词的数据位数,一个所述目标BLOCK RAM作为一个所述CAM单元。
在具体的实施过程中,还包括:
数据写入模块,用于接收所述计算机设备下发的写请求,其中,所述写请求中包括待写入密文关键词和待写入密文关键词写入地址;根据所述待写入密文关键词写入地址确定出用于存储所述待写入密文关键词的目标CAM单元和所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址;通过所述目标CAM单元的第一端口将所述待写入密文关键词和所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址组合作为目标地址,并在所述目标地址写1。
在具体的实施过程中,所述数据写入模块,用于:
确定所述待写入密文关键词写入地址与所述CAM单元中的存储列数之间的比值,其中,所述比值包括整数和余数;
将各个所述CAM单元中标识与所述整数相同的作为所述目标CAM单元,并将所述余数作为所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址。
在具体的实施过程中,所述数据写入模块,用于:
获取所述计算机设备发送的擦除请求,其中,所述擦除请求中包括待擦除CAM单元的标识;
将所述待擦除CAM单元中的各个存储位置上的1均置为0。
在具体的实施过程中,所述指令执行模块12,用于:
将所述读请求转换成检索指令;
通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,以判断各个所述CAM单元中存储行号为所述待检索密文关键词的存储地址上的数据是否为1;
如果存在所述CAM单元中存储行号为所述待检索密文关键词的存储地址上的数据为1,则通过该CAM单元将所述存储地址的存储列号作为所述偏移地址输出。
进一步的,参见图7所示,本申请实施例还公开了一种FPGA,包括:处理单元21和存储单元22。
其中,所述存储单元22,用于存储计算机程序;所述处理单元21,用于执行所述计算机程序,以实现前述实施例中公开的数据检索方法。
其中,关于上述数据检索方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述任一实施例中公开的数据检索方法。
其中,关于上述数据检索方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得一系列包含其他要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种数据检索方法、装置、FPGA、介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种数据检索方法,其特征在于,应用于FPGA,包括:
获取与所述FPGA相连接的计算机设备下发的读请求,其中,所述读请求中包括待检索密文关键词;
将所述读请求转换成检索指令,并通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,其中,所述检索指令中包括所述待检索密文关键词,所述CAM单元为将密文关键词索引表中的密文关键词按照预设存储方式存储到RAM中得到的,所述密文关键词索引表中包括密文关键词及各个密文关键词对应的完整版密文存储地址;
根据所述CAM单元输出的偏移地址和输出所述偏移地址的所述CAM单元的标识确定出所述待检索密文关键词对应的待检索密文关键词写入地址,其中,所述待检索密文关键词写入地址表示所述待检索密文关键词在所述密文关键词索引表中的位置;
将所述待检索密文关键词写入地址发送给所述计算机设备,以便所述计算机设备从所述密文关键词索引表中与所述待检索密文关键词写入地址对应的数据行中读出所述待检索密文关键词对应的完整版密文存储地址,以从所述待检索密文关键词对应的完整版密文存储地址下读取出待检索密文,得到密文检索结果。
2.根据权利要求1所述的数据检索方法,其特征在于,所述将所述待检索密文关键词写入地址发送给所述计算机设备,包括:
将所述待检索密文关键词写入地址转换成所述计算机设备的***总线格式,并将转换之后的待检索密文关键词写入地址发送给所述计算机设备。
3.根据权利要求1或2所述的数据检索方法,其特征在于,所述获取与所述FPGA相连接的计算机设备下发的读请求之前,还包括:
接收目标BLOCK RAM的配置信息,其中,所述目标BLOCK RAM的数量为根据所述密文关键词索引表确定出的;
根据所述配置信息对所述目标BLOCK RAM进行配置,以将所述目标BLOCK RAM配置为双端口模式,其中,所述目标BLOCK RAM的第一端口为单数据位宽端口,所述目标BLOCK RAM的第二端口的数据位宽为所述密文关键词索引表中密文关键词的数据位数,一个所述目标BLOCK RAM作为一个所述CAM单元。
4.根据权利要求3所述的数据检索方法,其特征在于,所述根据所述配置信息对所述目标BLOCK RAM进行配置,以将所述目标BLOCK RAM配置为双端口模式之后,还包括:
接收所述计算机设备下发的写请求,其中,所述写请求中包括待写入密文关键词和待写入密文关键词写入地址;
根据所述待写入密文关键词写入地址确定出用于存储所述待写入密文关键词的目标CAM单元和所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址;
通过所述目标CAM单元的第一端口将所述待写入密文关键词和所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址组合作为目标地址,并在所述目标地址写1。
5.根据权利要求4所述的数据检索方法,其特征在于,所述根据所述待写入密文关键词写入地址确定出用于存储所述待写入密文关键词的目标CAM单元和所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址,包括:
确定所述待写入密文关键词写入地址与所述CAM单元中的存储列数之间的比值,其中,所述比值包括整数和余数;
将各个所述CAM单元中标识与所述整数相同的作为所述目标CAM单元,并将所述余数作为所述目标CAM单元中用于存储所述待写入密文关键词的偏移地址。
6.根据权利要求3所述的数据检索方法,其特征在于,所述根据所述配置信息对所述目标BLOCK RAM进行配置,以将所述目标BLOCK RAM配置为双端口模式之后,还包括:
获取所述计算机设备发送的擦除请求,其中,所述擦除请求中包括待擦除CAM单元的标识;
将所述待擦除CAM单元中的各个存储位置上的1均置为0。
7.根据权利要求1所述的数据检索方法,其特征在于,所述将所述读请求转换成检索指令,并通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,包括:
将所述读请求转换成检索指令;
通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,以判断各个所述CAM单元中存储行号为所述待检索密文关键词的存储地址上的数据是否为1;
如果存在所述CAM单元中存储行号为所述待检索密文关键词的存储地址上的数据为1,则通过该CAM单元将所述存储地址的存储列号作为所述偏移地址输出。
8.一种数据检索装置,其特征在于,应用于FPGA,包括:
指令获取模块,用于获取与所述FPGA相连接的计算机设备下发的读请求,其中,所述读请求中包括待检索密文关键词;
指令执行模块,用于将所述读请求转换成检索指令,并通过所述FPGA上的预先构建的各个CAM单元并行执行所述检索指令,其中,所述检索指令中包括所述待检索密文关键词,所述CAM单元为将密文关键词索引表中的密文关键词按照预设存储方式存储到RAM中得到的,所述密文关键词索引表中包括密文关键词及各个密文关键词对应的完整版密文存储地址;
检索结果处理模块,用于根据所述CAM单元输出的偏移地址和输出所述偏移地址的所述CAM单元的标识确定出所述待检索密文关键词对应的待检索密文关键词写入地址,其中,所述待检索密文关键词写入地址表示所述待检索密文关键词在所述密文关键词索引表中的位置;
数据发送模块,用于将所述待检索密文关键词写入地址发送给所述计算机设备,以便所述计算机设备从所述密文关键词索引表中与所述待检索密文关键词写入地址对应的数据行中读出所述待检索密文关键词对应的完整版密文存储地址,以从所述待检索密文关键词对应的完整版密文存储地址下读取出待检索密文,得到密文检索结果。
9.一种FPGA,其特征在于,包括:
存储单元和处理单元;
其中,所述存储单元,用于存储计算机程序;
所述处理单元,用于执行所述计算机程序,以实现权利要求1至7任一项所述的数据检索方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的数据检索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110960936.9A CN113688410A (zh) | 2021-08-20 | 2021-08-20 | 一种数据检索方法、装置、fpga及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110960936.9A CN113688410A (zh) | 2021-08-20 | 2021-08-20 | 一种数据检索方法、装置、fpga及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113688410A true CN113688410A (zh) | 2021-11-23 |
Family
ID=78581024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110960936.9A Pending CN113688410A (zh) | 2021-08-20 | 2021-08-20 | 一种数据检索方法、装置、fpga及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113688410A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114091121A (zh) * | 2022-01-18 | 2022-02-25 | 苏州浪潮智能科技有限公司 | 一种消息摘要存储方法、***、存储介质及设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5680566A (en) * | 1995-03-03 | 1997-10-21 | Hal Computer Systems, Inc. | Lookaside buffer for inputting multiple address translations in a computer system |
JP2001222537A (ja) * | 2000-02-07 | 2001-08-17 | Mitsubishi Electric Corp | 一致データ検索装置 |
US6353332B1 (en) * | 2000-02-07 | 2002-03-05 | Xilinx, Inc. | Methods for implementing CAM functions using dual-port RAM |
JP2006350560A (ja) * | 2005-06-14 | 2006-12-28 | Synclient Kk | 電子メールシステム |
CN103475584A (zh) * | 2012-06-07 | 2013-12-25 | 中兴通讯股份有限公司 | 三态内容寻址存储器(tcam)查询方法和装置 |
CN105474181A (zh) * | 2013-08-31 | 2016-04-06 | 英派尔科技开发有限公司 | 内容可寻址存储器设备 |
US9454673B1 (en) * | 2013-11-08 | 2016-09-27 | Skyhigh Networks, Inc. | Searchable encryption for cloud storage |
CN109858263A (zh) * | 2019-01-21 | 2019-06-07 | 北京城市网邻信息技术有限公司 | 数据存储检索方法、装置、电子设备及存储介质 |
CN109921995A (zh) * | 2017-12-13 | 2019-06-21 | 华为技术有限公司 | 一种配置地址表的方法、fpga和应用该fpga的网络设备 |
CN112149151A (zh) * | 2019-06-29 | 2020-12-29 | 英特尔公司 | 用于微架构流水线的存储器加载单元和存储单元的加密计算引擎 |
-
2021
- 2021-08-20 CN CN202110960936.9A patent/CN113688410A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5680566A (en) * | 1995-03-03 | 1997-10-21 | Hal Computer Systems, Inc. | Lookaside buffer for inputting multiple address translations in a computer system |
JP2001222537A (ja) * | 2000-02-07 | 2001-08-17 | Mitsubishi Electric Corp | 一致データ検索装置 |
US6353332B1 (en) * | 2000-02-07 | 2002-03-05 | Xilinx, Inc. | Methods for implementing CAM functions using dual-port RAM |
JP2006350560A (ja) * | 2005-06-14 | 2006-12-28 | Synclient Kk | 電子メールシステム |
CN103475584A (zh) * | 2012-06-07 | 2013-12-25 | 中兴通讯股份有限公司 | 三态内容寻址存储器(tcam)查询方法和装置 |
CN105474181A (zh) * | 2013-08-31 | 2016-04-06 | 英派尔科技开发有限公司 | 内容可寻址存储器设备 |
US9454673B1 (en) * | 2013-11-08 | 2016-09-27 | Skyhigh Networks, Inc. | Searchable encryption for cloud storage |
CN109921995A (zh) * | 2017-12-13 | 2019-06-21 | 华为技术有限公司 | 一种配置地址表的方法、fpga和应用该fpga的网络设备 |
CN109858263A (zh) * | 2019-01-21 | 2019-06-07 | 北京城市网邻信息技术有限公司 | 数据存储检索方法、装置、电子设备及存储介质 |
CN112149151A (zh) * | 2019-06-29 | 2020-12-29 | 英特尔公司 | 用于微架构流水线的存储器加载单元和存储单元的加密计算引擎 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114091121A (zh) * | 2022-01-18 | 2022-02-25 | 苏州浪潮智能科技有限公司 | 一种消息摘要存储方法、***、存储介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109040341B (zh) | 智能合约地址的生成方法、装置、计算机设备及可读存储介质 | |
EP3292481B1 (en) | Method, system and computer program product for performing numeric searches | |
US20070028121A1 (en) | Method of protecting confidential data using non-sequential hidden memory blocks for mass storage devices | |
US20130276126A1 (en) | Website scanning device and method | |
CN102142282B (zh) | 一种NANDFlash存储芯片ECC校验算法的识别方法 | |
CN106776904A (zh) | 一种不可信云计算环境中支持动态验证的模糊查询加密方法 | |
US20170337386A1 (en) | Method, apparatus, and computer-readable medium for automated construction of data masks | |
CN101930524A (zh) | 文档信息创建装置、文档登记***和文档信息创建方法 | |
CN105138655A (zh) | 一种数据存储、读取方法及装置 | |
CN110990365A (zh) | 一种数据同步方法、装置、服务器及存储介质 | |
KR102319006B1 (ko) | 블록체인을 이용한 최초 저작권자 인증 시스템 및 그 방법 | |
CN113688410A (zh) | 一种数据检索方法、装置、fpga及介质 | |
JP4807364B2 (ja) | 情報管理装置 | |
Williams et al. | SR-ORAM: Single round-trip oblivious ram | |
CN107122683A (zh) | 一种数据存储方法、数据完整性校验方法及应用服务器 | |
CN114461672A (zh) | 数据检索方法、装置、计算机设备及存储介质 | |
CN116955223B (zh) | 一种数据预取方法、***、电子设备及计算机存储介质 | |
JP2008123423A5 (zh) | ||
JP2007334669A (ja) | 個人データ管理装置、個人データ管理方法、プログラム、及び記録媒体 | |
CN117081727B (zh) | 一种弱口令检测方法以及装置 | |
CN114065086B (zh) | 基于区块链的互联网浏览历史数据管理方法与*** | |
CN115292255A (zh) | 一种访问***文件的方法、装置、设备及介质 | |
CN108304401A (zh) | 电子图书搜索方法及*** | |
CN111262696B (zh) | 片上***的密钥管理方法、装置、设备及存储介质 | |
EP3402117B1 (en) | Method, apparatus, and computer-readable medium for automated construction of data masks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |