代码理解

news/2025/3/15 20:11:17/文章来源:https://www.cnblogs.com/bublen-study/p/18774125

这段代码实现了一个名为 Setup_JXT 的类,用于构建和存储加密数据结构(TSet 和 XSet),这些结构通常用于加密数据库或隐私保护查询系统。

1. 类成员变量

  • K_aes, K_token, K_x, K_y, K_h1, K_h2: 这些是用于加密和哈希的密钥。
  • table_id: 表的标识符。
  • key_column: 非连接属性的列数。
  • join_column: 连接属性的列数。
  • record_num: 表中的记录数。
  • condition: 查询条件。
  • id: 记录的唯一标识符数组。
  • keyword: 非连接属性的关键字数组。
  • join_attr: 连接属性的数组。
  • f: 一个布隆过滤器(Bloom Filter),用于实现 XSet。
  • tset: 一个映射,存储 TSet 条目,键是 BigInteger 类型的 token,值是一个 tuple 对象的列表。

2. 构造函数

public Setup_JXT(int table_id_, int key_column_num, int join_column_num, int record, String condition_t)
  • table_id_: 表的标识符。
  • key_column_num: 非连接属性的列数。
  • join_column_num: 连接属性的列数。
  • record: 表中的记录数。
  • condition_t: 查询条件。

3. construct 方法

这个方法负责构建 TSet 和 XSet。

3.1 读取数据集

  • Step 1.1: 准备参数,初始化数组和映射。
  • Step 1.2: 从 CSV 文件中读取数据,并构建 reverse_id 映射,该映射存储每个属性值对对应的记录 ID。

3.2 构建 XSet 和 TSet

  • Step 2.1: 计算 XSet 条目。使用 SHA-256 哈希函数生成 xy,然后计算它们的异或值 xy,并使用布隆过滤器构建 XSet。
  • Step 2.2: 计算 TSet 条目。对于每个属性值对,生成一个 token,并计算每个记录的加密值和哈希值,最后将这些值存储在 tset 中。

4. getTsetgetF 方法

  • getTset(): 返回 tset 映射。
  • getF(): 返回布隆过滤器 f

5. Store 方法

public void Store(String text)
  • text: 用于生成输出文件的名称。
  • 该方法将 tsetf 的内容写入文件。

示例

假设我们有一个包含以下数据的 CSV 文件 data/table1/table1_k2_j1_10_condition.csv:

id,attr1,attr2,join_attr1
1,value1,value2,join_value1
2,value3,value4,join_value2
...

我们可以使用 Setup_JXT 类来构建 TSet 和 XSet:

public class Main {public static void main(String[] args) {Setup_JXT setup = new Setup_JXT(1, 2, 1, 10, "condition");setup.construct();setup.Store("example");}
}

在这个示例中:

  1. Setup_JXT(1, 2, 1, 10, "condition"): 创建一个 Setup_JXT 对象,表 ID 为 1,2 个非连接属性,1 个连接属性,10 条记录,查询条件为 "condition"。
  2. setup.construct(): 构建 TSet 和 XSet。
  3. setup.Store("example"): 将 TSet 和 XSet 存储到文件 data/EDB/JXT_example.dat 中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/899359.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

英语单词音标重读符号读法作用

比如explicit,重读的是`后面的第一个元音即i

量子网络操作系统 QNodeOS 资料收集

2025年3月14日,通过科技日报的报道知道了这个量子计算领域的重大突破 —— 全球首个量子网络操作系统 QNodeOS 问世。欧洲的量子互联网联盟(QIA)的研究人员2025年3月12日在《自然》(Nature)杂志上发表了论文 An operating system for executing applications on quantum n…

Typora的基本的一些使用用法

markdown 标题 二级标题 (在最前面两个#号加空格) 三级标题 (在最前面三个#号加空格) 字体 Hello,World!(粗体:两边各两个星号) Hello,World!(斜体:两边各一个星号) Hello,World!(粗体加斜体:两边各三个星号) Hello,World!(删除体:两边各两个波浪号) 引用(大于加…

http--nodejs原生web服务

创建http服务const http = require(node:http) const url = require(node:url)http.createServer((req, res) => {}).listen(98, () => {console.log(server is running on port 98) }) 区分请求方法 例如常见的 POST、GET req表示前端的入参(请求参数)。 res 表示后…

Windows server 中 静默安装SQL SERVER 数据库 命令 参数

这篇文章记录一下自己如何在Windows Server Core上安装和配置SQL Server。 安装之前的检查 安装SQL Server的操作系统要求检查 第一件事是需要仔细检查SQL Server的要求文档,这个文档里详细的列出了目前SQL Server支持的操作系统版本,最重要的一条就是检查当你在使用云上的虚…

(3).工厂方法模式

我们接上一个模式的实例: (1).创建水果接口 IFruit:1 namespace 工厂方法模式2 {3 public interface IFruit4 {5 /// <summary>6 /// 水果的单价7 /// </summary>8 double Amount { get; }9 10 11 /// <s…

nestjs Provider

Nest 实现了 IoC 容器,会从入口模块开始扫描,分析 Module 之间的引用关系,对象之间的依赖关系,自动把 provider 注入到目标对象以上部分只是简写{provide: AppService,useClass: AppService }两种注入方式构造器注入属性注入全局模块一般来说,我们都是在需要导出的模块的m…

FastAPI+CrewAI+MySQL+Celery实现AI Agent复杂工作流

FastAPI+CrewAI+MySQL+Celery实现AI Agent复杂工作流 https://github.com/fanqingsong/CrewAIFlowsFullStack本项目主要实现使用FastAPI后端框架+CrewAI实现AI Agent复杂工作流。代码实现CrewAI的Flows功能,并支持Flow运行中间结果进行持久化存储和查询(MySQL),支持多Flow并行…

石家庄地铁收费app

先建立一个项目,项目结构如图所示先编写app页面activity_main.xml,包括其输入框和按钮<TextViewandroid:id="@+id/tvStartStation"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="起点站&quo…

[WSNesting 设置说明] 数控钻加工限制-不使用加工限制-自动连线

版权声明本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者 BensonLaur 和本文原始地址:

Git更新子模块

1.问题 如图,我们从GitHub上克隆下来一个库,内部还有类似这种右边蓝色S的表示的是该工程的子模块部分,一般初始为空,导致错误2.解决 我们需要用git submodule update --recursive --remote命令去更新初始化我们的子模块

pycharm2024下载安装一键激活2099年

​软件包和激活工具下载地址,关地球号:QStockView,发送pycharm,立刻发给你,全免费; 激活之后如下: 激活方式,打开压缩包,然后找到下面的文件,双击打开提示成功,之后,就可以了;去重新打开pycharm,就可以了; 中文设置如下: 添加图片注释,不超过 140 字(可选…