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 位的总检测次数.
   259   260   261   262   263   264   265   266   267   268   269