Page 264 - 《软件学报》2020年第11期
P. 264
侯瑞涛 等:分级可逆的关系数据水印方案 3579
水印检测算法如算法 3 所示.
算法 3. 水印检测算法.
Input: D w ,D s ,k,sk,S,Flag.
Output: W D .
1. for i=0 to ω−1 do
2. count_i=totalcount_i=0;
3. for each tuple r∈D W do
4. hash part =H(r.key,k);
5. i=hash part mod γ;
6. hash em =H(r.key,sk_i);
7. if (hash em mod η equals 0) {
8. if (Flag_i=1) {
9. A w _index x=hash em mod ε;
10. if (A_x is NULL)
11. continue(⋅);
12. bit w _index y=hash em mod ξ;
13. WS_index z=hash em mod ω;
14. bit s =Get(r.key,D s _i);
15. if (bit s equals −1)
16. continue(⋅);
17. else {
18. bit ws =bit w _y xor S_z;
19. W D _z=bit s xor bit ws ;
20. if (W D _z equals 1)
21. count_z++;
22. else
23. count_z−−;
24. totalcount_z++;}
25. else
26. next tuple;}}
27. for i=0 to ω−1 do
28. if (|count_i|≥totalcount_i×μ){
29. if (count_i>0)
30. W D _i=1;
31. else
32. W D _i=0;}
33. else
34. W D _i=−1;
35. Return W D ;
如算法 3 所述,水印检测算法的执行过程如下.
• 首先,初始化计数器.其中,count_i 表示对水印的第 i 位进行多数投票所用的计数器,totalcount_i 表示水
印第 i 位的总检测次数.