具体实施方式
一种比特串和哈希函数组合的网络地址前缀保留的匿名化方法,其特征是定义一个以IP地址前缀比特串所对应的十进制整数为输入的地址前缀哈希函数和一个随机比特串,地址前缀哈希函数将IP地址前缀长度为i的IP地址前缀比特串生成哈希值,然后查找随机比特串上所对应哈希值位置上的比特值,将该比特值与需要被匿名化的IP地址的第i个比特进行异或运算,并将异或后的结果作为该IP地址的第i个比特的匿名化比特,对IP地址中的每个比特都采用上述方法进行处理,实现对整个IP地址的匿名化处理,具体技术步骤如下:
第一步:设置参数
设置一个长度为L的随机比特串S,L是大于等于32的正整数,定义一个地址前缀哈希函数为(λ·a)mod m,设置大于0的乘子λ和模数m两个函数参数值,m是小于等于L的正整数,定义IP地址X的32个比特按顺序分别为X[1]、X[2]、...、X[32],定义Y是IP地址X匿名化以后的地址,其对应的32个比特按顺序分别为Y[1]、Y[2]、...、Y[32],设置当前计算的IP地址前缀长度i等于0,定义a是IP地址前缀长度为i时对应的正整数,定义i等于0时a等于0,进入第二步;
第二步:计算当前的IP地址前缀长度
如果当前IP地址X的前缀长度i小于32,则设置前缀长度i增加1,进入第三步;否则进入到第七步;
第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度i对应的正整数a为前缀长度i-1对应的正整数a乘以2加上IP地址X第i个比特对应的比特值X[i],进入到第四步;
第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度i所对应的哈希值s,s=(λ·a)mod m,进入第五步;
第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应s+1位置的比特值b,进入到第六步;
第六步:匿名化IP地址的第i个比特
如果比特值b是0,则直接将IP地址X第i个比特直接赋值给匿名化后的IP地址Y的第i个比特Y[i]=X[i],回到第二步,如果比特值b是1,则将IP地址X第i个比特翻转后赋值给匿名化后的IP地址Y的第i个比特,即如果X[i]是0,则Y[i]=1,如果X[i]是1,则Y[i]=0,回到第二步;
第七步:输出匿名化的IP地址
将IP地址X匿名化后的IP地址Y输出,IP地址X匿名化结束。
图1、图2、图3是比特串和哈希函数组合的IP地址前缀保留匿名化方法具体实施方式中涉及的匿名化函数树示意图、匿名化方法示意图和方法流程图,该例子要匿名化一个10110000110000000011111111111110的IP地址,
本发明实施举例的具体技术步骤如下:
(1)第一步:设置参数
设置一个长度34的随机比特串S=1010101010101010101010101010101010,设置非负数的乘子λ=1和模数m=32,定义IP地址X的32个比特按顺序分别为X[1]、X[2]、...、X[32],定义Y是IP地址X匿名化以后的地址,其对应的32个比特按顺序分别为Y[1]、Y[2]、...、Y[32],定义i是当前计算的IP地址前缀长度,设置i等于0,定义a是IP地址前缀长度为i时对应的整数,定义i等于0时a等于0,进入(2)第二步;
(2)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=0小于32,则设置前缀长度i增加1,进入(3)第三步;
(3)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度1对应的正整数是由前缀长度0对应的正整数乘以2加上IP地址X第i个比特对应的比特值1,即1=0*2+1,进入到(4)第四步;
(4)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度i所对应的哈希值s,s=(λ·a)mod m=1 mod 32=1,进入(5)第五步;
(5)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应s+1=2位置的比特值b为0,进入到(6)第六步;
(6)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第1个比特1直接赋值给匿名化后的IP地址Y的第1个比特Y[1]=1,回到(7)第二步;
(7)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=1小于32,则设置前缀长度i增加1为2,进入(8)第三步;
(8)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度2对应的正整数是由前缀长度1对应的正整数1乘以2加上IP地址X第2个比特对应的比特值0,即1*2+0=2,进入到(9)第四步;
(9)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度2所对应的哈希值s,s=(λ·a)mod m=2mod 32=2,进入(10)第五步;
(10)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应s+1=3位置的比特值b为1,进入到(11)第六步;
(11)第六步:匿名化IP地址的第i个比特
比特值b是1,则将IP地址X第2个比特翻转后赋值给匿名化后的IP地址Y的第2个比特,X[2]是0,则Y[2]=1,回到(12)第二步;
(12)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=2小于32,则设置前缀长度i增加1为3,进入(13)第三步;
(14)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度3对应的正整数是由前缀长度2对应的正整数2乘以2加上IP地址X第3个比特对应的比特值1,即2*2+1=5,进入到(15)第四步;
(15)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度3所对应的哈希值s,s=(λ·a)mod m=5mod 32=5,进入(16)第五步;
(16)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应5+1=6位置的比特值b为0,进入到(17)第六步;
(17)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第3个比特直接赋值给匿名化后的IP地址Y的第3个比特Y[3]=X[3]=1,回到(18)第二步;
(18)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=3小于32,则设置前缀长度i增加1为4,进入(19)第三步;
(19)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度4对应的正整数是由前缀长度3对应的正整数5乘以2加上IP地址X第4个比特对应的比特值1,即5*2+1=11,进入到(20)第四步;
(20)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度4所对应的哈希值s,s=(λ·a)modm=11mod 32=11,进入(21)第五步;
(21)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应11+1=12位置的比特值b为0,进入到(22)第六步;
(22)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第4个比特直接赋值给匿名化后的IP地址Y的第4个比特Y[4]=X[4]=1,回到(23)第二步;
(23)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=4小于32,则设置前缀长度i增加1为5,进入(24)第三步;
(24)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度5对应的正整数是由前缀长度4对应的正整数11乘以2加上IP地址X第5个比特对应的比特值0,即11*2+0=22,进入到(25)第四步;
(25)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度5所对应的哈希值s,s=(λ·a)mod m=22mod 32=22,进入(26)第五步;
(26)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应22+1=23位置的比特值b为1,进入到(27)第六步;
(27)第六步:匿名化IP地址的第i个比特
比特值b是1,则将IP地址X第5个比特翻转后赋值给匿名化后的IP地址Y的第5个比特,即X[5]是0,则Y[5]=1,回到(28)第二步;
(28)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=5小于32,则设置前缀长度i增加1为6,进入(29)第三步;
(29)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度6对应的正整数是由前缀长度5对应的正整数22乘以2加上IP地址X第6个比特对应的比特值0,即22*2+0=44,进入到(30)第四步;
(30)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度6所对应的哈希值s,s=(λ·a)mod m=44 mod 32=12,进入(31)第五步;
(31)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应12+1=13位置的比特值b为1,进入到(32)第六步;
(32)第六步:匿名化IP地址的第i个比特
比特值b是1,则将IP地址X第6个比特翻转后赋值给匿名化后的IP地址Y的第6个比特,即X[6]是0,则Y[6]=1,回到(33)第二步;
(33)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=6小于32,则设置前缀长度i增加1为7,进入(34)第三步;
(34)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度7对应的正整数是由前缀长度6对应的正整数44乘以2加上IP地址X第7个比特对应的比特值0,即44*2+0=88,进入到(35)第四步;
(35)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度7所对应的哈希值s,s=(λ·a)mod m=88 mod 32=24,进入(36)第五步;
(36)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应24+1=25位置的比特值b为1,进入到(37)第六步;
(37)第六步:匿名化IP地址的第i个比特
比特值b是1,则将IP地址X第7个比特翻转后赋值给匿名化后的IP地址Y的第7个比特,即X[7]是0,则Y[7]=1,回到(38)第二步;
(38)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=7小于32,则设置前缀长度i增加1为8,进入(39)第三步;
(39)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度8对应的正整数是由前缀长度7对应的正整数88乘以2加上IP地址X第8个比特对应的比特值0,即88*2+0=176,进入到(40)第四步;
(40)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度8所对应的哈希值s,s=(λ·a)mod m=176 mod 32=16,进入(41)第五步;
(41)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应16+1=17位置的比特值b为1,进入到(42)第六步;
(42)第六步:匿名化IP地址的第i个比特
比特值b是1,则将IP地址X第8个比特翻转后赋值给匿名化后的IP地址Y的第8个比特,即X[8]是0,则Y[8]=1,回到(43)第二步;
(43)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=8小于32,则设置前缀长度i增加1为9,进入(44)第三步;
(44)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度9对应的正整数是由前缀长度8对应的正整数176乘以2加上IP地址X第9个比特对应的比特值1,即176*2+1=353,进入到(45)第四步;
(45)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度9所对应的哈希值s,s=(λ·a)mod m=353 mod 32=1,进入(46)第五步;
(46)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应1+1=2位置的比特值b为0,进入到(47)第六步;
(47)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第9个比特直接赋值给匿名化后的IP地址Y的第9个比特Y[9]=X[9]=1,回到(48)第二步;
(48)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=9小于32,则设置前缀长度i增加1为10,进入(49)第三步;
(49)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度10对应的正整数是由前缀长度9对应的正整数353乘以2加上IP地址X第10个比特对应的比特值1,即353*2+1=707,进入到(50)第四步;
(50)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度10所对应的哈希值s,s=(λ·a)mod m=707 mod 32=3,进入(51)第五步;
(51)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应3+1=4位置的比特值b为0,进入到(52)第六步;
(52)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第10个比特直接赋值给匿名化后的IP地址Y的第10个比特Y[10]=X[10]=1,回到(53)第二步;
(53)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=10小于32,则设置前缀长度i增加1为11,进入(54)第三步;
(54)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度11对应的正整数是由前缀长度10对应的正整数707乘以2加上IP地址X第11个比特对应的比特值0,即707*2+0=1414,进入到(55)第四步;
(55)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度11所对应的哈希值s,s=(λ·a)mod m=1414 mod 32=6,进入(56)第五步;
(56)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应6+1=7位置的比特值b为1,进入到(57)第六步;
(57)第六步:匿名化IP地址的第i个比特
比特值b是1,则将IP地址X第11个比特翻转后赋值给匿名化后的IP地址Y的第11个比特,X[11]是0,则Y[11]=1,回到(58)第二步;
(58)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=11小于32,则设置前缀长度i增加1为12,进入(59)第三步;
(59)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度12对应的正整数是由前缀长度11对应的正整数1414乘以2加上IP地址X第12个比特对应的比特值0,即1414*2+0=2828,进入到(60)第四步;
(60)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度12所对应的哈希值s,s=(λ·a)mod m=2828 mod 32=12,进入(61)第五步;
(61)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应12+1=13位置的比特值b为1,进入到(62)第六步;
(62)第六步:匿名化IP地址的第i个比特
比特值b是1,则将IP地址X第12个比特翻转后赋值给匿名化后的IP地址Y的第12个比特,X[12]是0,则Y[12]=1,回到(63)第二步;
(63)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=12小于32,则设置前缀长度i增加1为13,进入(64)第三步;
(64)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度13对应的正整数是由前缀长度12对应的正整数2828乘以2加上IP地址X第13个比特对应的比特值0,即2828*2+0=5656,进入到(65)第四步;
(65)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度13所对应的哈希值s,s=(λ·a)mod m=5656 mod 32=24,进入(66)第五步;
(66)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应24+1=25位置的比特值b为1,进入到(67)第六步;
(67)第六步:匿名化IP地址的第i个比特
比特值b是1,则将IP地址X第13个比特翻转后赋值给匿名化后的IP地址Y的第13个比特,X[13]是0,则Y[13]=1,回到(68)第二步;
(68)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=13小于32,则设置前缀长度i增加1为14,进入(69)第三步;
(69)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度14对应的正整数是由前缀长度13对应的正整数5656乘以2加上IP地址X第14个比特对应的比特值0,即5656*2+0=11312,进入到(70)第四步;
(70)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度14所对应的哈希值s,s=(λ·a)mod m=11312 mod 32=16,进入(71)第五步;
(71)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应16+1=17位置的比特值b为1,进入到(72)第六步;
(72)第六步:匿名化IP地址的第i个比特
比特值b是1,则将IP地址X第14个比特翻转后赋值给匿名化后的IP地址Y的第14个比特,X[14]是0,则Y[14]=1,回到(73)第二步;
(73)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=14小于32,则设置前缀长度i增加1为15,进入(74)第三步;
(74)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度15对应的正整数是由前缀长度14对应的正整数11312乘以2加上IP地址X第15个比特对应的比特值0,即11312*2+0=22624,进入到(75)第四步;
(75)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度15所对应的哈希值s,s=(λ·a)mod m=22624 mod 32=0,进入(76)第五步;
(76)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应0+1=1位置的比特值b为1,进入到(77)第六步;
(77)第六步:匿名化IP地址的第i个比特
比特值b是1,则将IP地址X第15个比特翻转后赋值给匿名化后的IP地址Y的第15个比特,X[15]是0,则Y[15]=1,回到(78)第二步;
(78)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=15小于32,则设置前缀长度i增加1为16,进入(79)第三步;
(79)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度16对应的正整数是由前缀长度15对应的正整数22624乘以2加上IP地址X第16个比特对应的比特值0,即22624*2+0=45248,进入到(80)第四步;
(80)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度16所对应的哈希值s,s=(λ·a)mod m=45248 mod 32=0,进入(81)第五步;
(81)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应0+1=1位置的比特值b为1,进入到(82)第六步;
(82)第六步:匿名化IP地址的第i个比特
比特值b是1,则将IP地址X第16个比特翻转后赋值给匿名化后的IP地址Y的第16个比特,X[16]是0,则Y[16]=1,回到(83)第二步;
(83)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=16小于32,则设置前缀长度i增加1为17,进入(84)第三步;
(84)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度17对应的正整数是由前缀长度16对应的正整数45248乘以2加上IP地址X第17个比特对应的比特值0,即45248*2+0=90496,进入到(85)第四步;
(85)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度17所对应的哈希值s,s=(λ·a)mod m=90496 mod 32=0,进入(86)第五步;
(86)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应0+1=1位置的比特值b为1,进入到(87)第六步;
(87)第六步:匿名化IP地址的第i个比特
比特值b是1,则将IP地址X第17个比特翻转后赋值给匿名化后的IP地址Y的第17个比特,X[17]是0,则Y[17]=1,回到(88)第二步;
(88)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=17小于32,则设置前缀长度i增加1为18,进入(89)第三步;
(89)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度18对应的正整数是由前缀长度17对应的正整数90496乘以2加上IP地址X第18个比特对应的比特值0,即90496*2+0=180992,进入到(90)第四步;
(90)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度18所对应的哈希值s,s=(λ·a)mod m=180992 mod 32=0,进入(91)第五步;
(91)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应0+1=1位置的比特值b为1,进入到(92)第六步;
(92)第六步:匿名化IP地址的第i个比特
比特值b是1,则将IP地址X第18个比特翻转后赋值给匿名化后的IP地址Y的第18个比特,X[18]是0,则Y[18]=1,回到(93)第二步;
(93)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=18小于32,则设置前缀长度i增加1为19,进入(94)第三步;
(94)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度19对应的正整数是由前缀长度18对应的正整数180992乘以2加上IP地址X第19个比特对应的比特值1,即180992*2+1=361985,进入到(95)第四步;
(95)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度19所对应的哈希值s,s=(λ·a)mod m=361985 mod 32=1,进入(96)第五步;
(96)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应1+1=2位置的比特值b为0,进入到(97)第六步;
(97)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第19个比特直接赋值给匿名化后的IP地址Y的第19个比特Y[19]=X[19]=1,回到(98)第二步;
(98)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=19小于32,则设置前缀长度i增加1为20,进入(99)第三步;
(99)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度20对应的正整数是由前缀长度19对应的正整数361985乘以2加上IP地址X第20个比特对应的比特值1,即361985*2+1=723971,进入到(100)第四步;
(100)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度20所对应的哈希值s,s=(λ·a)mod m=723971 mod 32=3,进入(101)第五步;
(101)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应3+1=4位置的比特值b为0,进入到(102)第六步;
(102)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第20个比特直接赋值给匿名化后的IP地址Y的第20个比特Y[20]=X[20]=1,回到(103)第二步;
(103)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=20小于32,则设置前缀长度i增加1为21,进入(104)第三步;
(104)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度21对应的正整数是由前缀长度20对应的正整数723971乘以2加上IP地址X第21个比特对应的比特值1,即723971*2+1=1447943,进入到(105)第四步;
(105)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度21所对应的哈希值s,s=(λ·a)mod m=1447943 mod 32=7,进入(106)第五步;
(106)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应7+1=8位置的比特值b为0,进入到(107)第六步;
(107)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第21个比特直接赋值给匿名化后的IP地址Y的第21个比特Y[21]=X[21]=1,回到(108)第二步;
(108)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=21小于32,则设置前缀长度i增加1为22,进入(109)第三步;
(109)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度22对应的正整数是由前缀长度21对应的正整数1447943乘以2加上IP地址X第22个比特对应的比特值1,即1447943*2+1=2895887,进入到(110)第四步;
(110)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度22所对应的哈希值s,s=(λ·a)mod m=2895887mod 32=15,进入(111)第五步;
(111)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应15+1=16位置的比特值b为0,进入到(112)第六步;
(112)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第22个比特直接赋值给匿名化后的IP地址Y的第22个比特Y[22]=X[22]=1,回到(113)第二步;
(113)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=22小于32,则设置前缀长度i增加1为23,进入(114)第三步;
(114)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度23对应的正整数是由前缀长度22对应的正整数2895887乘以2加上IP地址X第23个比特对应的比特值1,即2895887*2+1=5791775,进入到(115)第四步;
(115)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度23所对应的哈希值s,s=(λ·a)mod m=5791775 mod 32=31,进入(116)第五步;
(116)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应31+1=32位置的比特值b为0,进入到(117)第六步;
(117)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第23个比特直接赋值给匿名化后的IP地址Y的第23个比特Y[23]=X[23]=1,回到(118)第二步;
(118)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=23小于32,则设置前缀长度i增加1为24,进入(119)第三步;
(119)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度24对应的正整数是由前缀长度23对应的正整数5791775乘以2加上IP地址X第24个比特对应的比特值1,即5791775*2+1=11583551,进入到(120)第四步;
(120)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度24所对应的哈希值s,s=(λ·a)mod m=11583551 mod 32=31,进入(121)第五步;
(121)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应31+1=32位置的比特值b为0,进入到(122)第六步;
(122)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第24个比特直接赋值给匿名化后的IP地址Y的第24个比特Y[24]=X[24]=1,回到(123)第二步;
(123)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=24小于32,则设置前缀长度i增加1为25,进入(124)第三步;
(124)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度25对应的正整数是由前缀长度24对应的正整数11583551乘以2加上IP地址X第25个比特对应的比特值1,即11583551*2+1=23167103,进入到(125)第四步;
(125)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度25所对应的哈希值s,s=(λ·a)mod m=23167103 mod 32=31,进入(126)第五步;
(126)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应31+1=32位置的比特值b为0,进入到(127)第六步;
(127)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第25个比特直接赋值给匿名化后的IP地址Y的第25个比特Y[25]=X[25]=1,回到(128)第二步;
(128)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=25小于32,则设置前缀长度i增加1为26,进入(129)第三步;
(129)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度26对应的正整数是由前缀长度25对应的正整数23167103乘以2加上IP地址X第26个比特对应的比特值1,即23167103*2+1=46334207,进入到(130)第四步;
(130)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度26所对应的哈希值s,s=(λ·a)mod m=46334207 mod 32=31,进入(131)第五步;
(131)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应31+1=32位置的比特值b为0,进入到(132)第六步;
(132)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第26个比特直接赋值给匿名化后的IP地址Y的第26个比特Y[26]=X[26]=1,回到(133)第二步;
(133)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=26小于32,则设置前缀长度i增加1为27,进入(134)第三步;
(134)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度27对应的正整数是由前缀长度26对应的正整数46334207乘以2加上IP地址X第27个比特对应的比特值1,即46334207*2+1=92668415,进入到(135)第四步;
(135)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度27所对应的哈希值s,s=(λ·a)mod m=92668415 mod 32=31,进入(136)第五步;
(136)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应31+1=32位置的比特值b为0,进入到(137)第六步;
(137)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第27个比特直接赋值给匿名化后的IP地址Y的第27个比特Y[27]=X[27]=1,回到(138)第二步;
(138)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=27小于32,则设置前缀长度i增加1为28,进入(139)第三步;
(139)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度28对应的正整数是由前缀长度27对应的正整数92668415乘以2加上IP地址X第28个比特对应的比特值1,即92668415*2+1=185336831,进入到(140)第四步;
(140)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度28所对应的哈希值s,s=(λ·a)mod m=185336831 mod 32=31,进入(141)第五步;
(141)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应31+1=32位置的比特值b为0,进入到(142)第六步;
(142)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第28个比特直接赋值给匿名化后的IP地址Y的第28个比特Y[28]=X[28]=1,回到(143)第二步;
(144)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=28小于32,则设置前缀长度i增加1为29,进入(145)第三步;
(145)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度29对应的正整数是由前缀长度28对应的正整数185336831乘以2加上IP地址X第29个比特对应的比特值1,即185336831*2+1=370673663,进入到(146)第四步;
(146)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度29所对应的哈希值s,s=(λ·a)mod m=370673663 mod 32=31,进入(147)第五步;
(147)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应31+1=32位置的比特值b为0,进入到(148)第六步;
(148)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第29个比特直接赋值给匿名化后的IP地址Y的第29个比特Y[29]=X[29]=1,回到(149)第二步;
(149)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=29小于32,则设置前缀长度i增加1为30,进入(150)第三步;
(150)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度30对应的正整数是由前缀长度29对应的正整数370673663乘以2加上IP地址X第30个比特对应的比特值1,即370673663*2+1=741347327,进入到(151)第四步;
(151)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度30所对应的哈希值s,s=(λ·a)mod m=741347327 mod 32=31,进入(152)第五步;
(152)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应31+1=32位置的比特值b为0,进入到(153)第六步;
(153)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第30个比特直接赋值给匿名化后的IP地址Y的第30个比特Y[30]=X[30]=1,回到(154)第二步;
(154)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=30小于32,则设置前缀长度i增加1为31,进入(155)第三步;
(155)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度31对应的正整数是由前缀长度30对应的正整数741347327乘以2加上IP地址X第31个比特对应的比特值1,即741347327*2+1=1482694655,进入到(156)第四步;
(156)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度31所对应的哈希值s,s=(λ·a)mod m=1482694655 mod 32=31,进入(157)第五步;
(157)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应31+1=32位置的比特值b为0,进入到(158)第六步;
(158)第六步:匿名化IP地址的第i个比特
比特值b是0,则直接将IP地址X第31个比特直接赋值给匿名化后的IP地址Y的第31个比特Y[31]=X[31]=1,回到(159)第二步;
(159)第二步:计算当前的IP地址前缀长度
当前X的前缀长度i=31小于32,则设置前缀长度i增加1为32,进入(160)第三步;
(160)第三步:计算前缀长度i的IP地址X对应的正整数
前缀长度32对应的正整数是由前缀长度31对应的正整数1482694655乘以2加上IP地址X第32个比特对应的比特值0,即1482694655*2+0=2965389310,进入到(161)第四步;
(161)第四步:采用地址前缀哈希函数计算哈希值
采用地址前缀哈希函数计算当前前缀长度32所对应的哈希值s,s=(λ·a)mod m=2965389310mod 32=30,进入(162)第五步;
(162)第五步:根据哈希值查找随机比特串所在位置的比特值
根据哈希值s值查找随机比特串S所对应30+1=31位置的比特值b为1,进入到(163)第六步;
(163)第六步:匿名化IP地址的第i个比特
比特值b是1,则将IP地址X第32个比特翻转后赋值给匿名化后的IP地址Y的第32个比特,X[32]是0,则Y[32]=1,回到(164)第二步;
(164)第二步:计算当前的IP地址前缀长度
当前IP地址X的前缀长度i等于32,进入到(165)第七步;
(165)第七步:输出匿名化的IP地址
将IP地址X匿名化后的IP地址Y输出,IP地址X匿名化结束。
IP地址X 10110000 11000000 00111111 11111110 的匿名化地址
Y 11111111 11111111 11111111 11111111