Page 445 - 《软件学报》2025年第8期
P. 445
3868 软件学报 2025 年第 36 卷第 8 期
27. set b = 1
28. TSet[u] = e
29. ELSE
30. set b = 0
31. END IF
32. ELSE
33. IF BF 2 [h] ≠ 1 && BF 1 [h] = 1 THEN
34. set BF 2 [h] = 1
35. set b = 1
36. ELSE
37. set b = 0
38. END IF
39. END IF
40. SEND b TO Client
Client:
41. IF op = add && b = 1 THEN
42. UpdCnt[w] ← UpdCnt[w]+1
43. XSet[w] ← (st i+1 , c i+1 )
44. IF op = del && b = 1 THEN
45. UpdCnt[w] ← UpdCnt[w]−1
46. END IF
当对 w 对应的文件 ind 进行操作时, 客户端首先利用不同的密钥计算出关键词令牌 t w 、文件索引密文 c i+ 以
1
及包含令牌和文件索引密文的哈希值 h, 客户端检查关键词 w 是否针对此文件执行过更新. 当添加包含关键词 w
的文件时, 客户端首先判断此次操作是否是首次为关键词 w 添加文件. 若从未添加过关键词为 w 的文件, 则客户
端会随机初始化 w 的状态信息 td, 并以此计算 u 和 e, 需要注意的是, 若添加的文件为第 1 个文件, 值 e 包含一个
状态终止标志; 若关键词 w 已添加过文件, 则进行正常计算, 此时值 e 包含了关键词 w 的状态信息. 之后, 客户端
将 (u, e, h, td) 发送到服务器 (删除时仅发送 (h, td)).
对于服务器, 当所执行的操作为添加关键词 w 对应的文件时, 首先获取该关键词对应的添加布隆过滤器和删
除布隆过滤器, 若获取失败 (表示该关键词为初次更新), 则创建两个空布隆过滤器 BF 1 和 BF 2 , 分别表示该关键词
对应的添加布隆过滤器和删除布隆过滤器. 接下来判断该文件是否已存在, 若不存在, 则将包含关键词令牌和文件
索引密文的哈希值 h 插入到布隆过滤器 BF 1 中, 并保存该文件, 将 b 置为 1, 添加成功; 否则文件已存在, 将值 b 设
为 0. 与添加类似, 当所执行的操作为删除关键词 w 对应的文件时, 服务器首先判断该文件是否已被添加且是否被
删除, 若该文件已被添加且未被删除, 服务器将包含关键词令牌和文件索引密文的哈希值 h 插入到布隆过滤器
BF 2 中, 将 b 的值置为 1, 删除成功; 否则, 文件曾被添加但被删除或未被添加, 将 b 的值设为 0, 删除失败. 最后, 服
务器将值 b 发送给客户端, 表示服务器端的操作结果.
客户端接收到服务器发来的 b, 若 b = 1 且对该文件的操作为添加, 表示添加成功, 客户端将更新计数器
UpdCnt 的值加 1, 并更新映射 XSet, 若 b = 1 且对该文件的操作为删除, 表示删除成功, 客户端将更新计数器
UpdCnt 的值减 1; 否则, 表示客户端对该文件的操作不合理.
(3) 搜索算法 Search
算法 3 详细描述了 RFBC 方案的搜索算法. 当进行联合关键词查询时, 客户端首先确定文件更新计数器 UpdCnt
中值最小的关键词 (假设是 w 1 ), 然后根据映射 XSet 得到关键词 w 1 最新的状态信息, 接着计算所有查询关键词的

