首页 > 学院 > 开发设计 > 正文

IP黑名单校验

2019-11-10 17:26:46
字体:
来源:转载
供稿:网友

1.原理

ip区间 0.0.0.0-255.255.255.255 即16进制的0.0.0.0-FF.FF.FF.FF 最大最小值区间:可按位与为00000~FFFFFFFF

比较的时候:把需要进行判断的IP,和需要比较的区间转化为16进制,再与做大小比较

2.具体实现:

// 例: 黑名单:10.102.49.1-10.102.49.3// 当前IP:10.102.49.37 String dicCont = dicEntity2.getDicCont(); String[] dicIps = dicCont.split("-"); String[] ips = ip.split("//."); //解析网段黑名单 String[][] ipWhite = {dicIps[0].split("//."), dicIps[1].split("//.")};// 黑名单网段的上行 int _3DicUp = Integer.parseInt(ipWhite[1][0]); int _6DicUp = Integer.parseInt(ipWhite[1][1]); int _9DicUp = Integer.parseInt(ipWhite[1][2]); int _12DicUp = Integer.parseInt(ipWhite[1][3]);// 黑名单网段的下行 int _3DicDown = Integer.parseInt(ipWhite[0][0]); int _6DicDown = Integer.parseInt(ipWhite[0][1]); int _9DicDown = Integer.parseInt(ipWhite[0][2]); int _12DicDown = Integer.parseInt(ipWhite[0][3]);// 黑名单当前ip int _3loc = Integer.parseInt(ips[0]); int _6loc = Integer.parseInt(ips[1]); int _9loc = Integer.parseInt(ips[2]); int _12loc = Integer.parseInt(ips[3]); //按位与拼接上行 long upIp = 0xff & _3DicUp << 24 | _6DicUp << 16 | _9DicUp << 8 | _12DicUp; //按位与拼接下行 long downIp = 0xff & _3DicDown << 24 | _6DicDown << 16 | _9DicDown << 8 | _12DicDown; long locIp = 0xff & _3loc << 24 | _6loc << 16 | _9loc << 8 | _12loc; // 当前IP与上行IP、下行IP比较 if (locIp >= downIp && locIp <= upIp) { //返回1表示,当前IP处于黑名单区间 return 1; }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表