一种高效黑名单搜索方法

文档序号:9818335阅读:544来源:国知局
一种高效黑名单搜索方法
【技术领域】
[0001] 本发明属于信息安全领域,尤其涉及一种高效黑名单搜索方法。
【背景技术】
[0002] 每一张人民币拥有冠字号,冠字号码是一张纸币的唯一编号,冠字号码由数字和 大写字母组成,长度为十位。
[0003] 冠字号黑名单分为假币特征的冠字号码,盗抢币的冠字号码,或者其它需要进行 筛选和拦截的冠字号码。A点验钞机,清分机或者ATM等现金设备内部存储可以存储几十万 以上黑名单,这类现金设备,具有CIS图像扫描模块,扫描的图片通过内置软件可以识别出 人民币的冠字号码,得到冠字号码后,内置程序搜索存储的黑名单记录,发现有匹配的记 录,就进行拦截并做出提示。现金设备清点纸币的速度一般为每分钟900到1500张,以1500 张最大值计算,处理每张纸币的时间只有66毫秒到40毫秒,能够留给冠字号搜索和拦截的 时间就更少了,一般不超过8毫秒,现金设备中性能最差的是A类点钞机,一般为500MHZ左右 的CPU,这对黑名单的搜索算法提出很高要求。黑名单分为没有带通配符(*)和带有通配符 (*)的黑名单,通配符标明该位置为任意数字和字母。黑名单示例如下:
[0005] 现有的冠字号黑名单搜索方法为遍历整个黑名单列表,匹配字符,如果有完全匹 配的一条就记录下来,继续匹配字符,直到最后一条黑名单。现有黑名单搜索方法比对次数 多,查询时间久。

【发明内容】

[0006] 本发明的目的在于针对现有技术的不足,提供一种高效黑名单搜索方法。其应用 在冠字号黑名单搜索时,可适用于低CPU设备,同时黑名单列表可以支持通配符,黑名单数 量可以支持50万以上,搜索时间远小于允许的时间5毫秒,可以应用在A类点钞机这种CPU资 源比较小的设备上。
[0007] 为解决上述问题,本发明技术方案如下:一种高效黑名单搜索方法,该方法包括如 下步骤:
[0008] (1)输入一条待匹配号码。
[0009] (2)获取初始黑名单列表;所述黑名单由普通字符组成,或由普通字符和通配符组 成;所述普通字符为字母或数字;所述通配符用*或其他特殊字符表示,代表该位置对应任 意字母或数字。
[0010] (3)对步骤2获取的初始黑名单列表按照字符的ASII值进行升序或降序排序,得到 排序黑名单列表。
[0011] (4)设置查找排序黑名单列表第一列。
[0012] (5)在排序黑名单列表第1列中查找匹配普通字符的最低位置。
[0013] (6)在排序黑名单列表第1列中查找匹配普通字符的最高字符。
[0014] (7)在排序黑名单列表第1列中查找匹配通配符(*)的最低位置。
[0015] (8)在排序黑名单列表第1列中查找匹配通配符(*)的最高位置。
[0016] (9)递归执行步骤5到8,其中只要查找到匹配,便设置查找排序黑名单列表的列号 递增1,直到最后一列。
[0017] (10)在排序黑名单列表的最后一列查找到匹配字符,说明有匹配的黑名单,输出 该黑名单,否则说明无匹配的黑名单。
[0018] 进一步地,在排序黑名单列中查找最低位置匹配字符的方法,具体如下:
[0019] 输入待匹配号码,设置起始位置start = 0,结束位置end =黑名单列表数量-1。
[0020] 黑名单列表已经排好序,现查找排序后某列匹配字符,按照二分法,取最中间位置 mid处字符,mid=(起始位置start-结束位置end)/2。
[0021] 如果最中间位置字符ASII值小于输入的待匹配号码对应位置字符,设置起始位置 start=mid+l,end位置不变,继续循环查找。
[0022] 如果最中间位置字符ASII值大于输入的待匹配号码对应位置字符,设置起始位置 end=mid_l,start位置不变,继续循环查找。
[0023] 如果最中间位置字符ASII值等于输入的待匹配号码对应位置字符,且最中间位置 前一位置字符ASII值不等于输入的待匹配号码对应位置字符,则找到最低位置,输出最低 位置;否则设置结束位置end=mid-l,start位置不变,继续循环查找。
[0024] 进一步地,该方法的最大字符比对次数Μ计算公式如下:
[0025] M=log(2)(N) XLX4
[0026] 其中N为黑名单列表数量,L为黑名单长度,4为每一列采用最多4次二分法计算匹 配字符位置。
[0027] 进一步地,所述黑名单为人民币冠字号黑名单,长度为10位。
[0028] 本发明的有益效果是:本发明提出一种黑名单搜索匹配的高效方法,通过对黑名 单的ASII值进行排序,采用二分法分别搜索匹配黑名单第一列普通字符和通配符,搜索到 后递归搜索下一列,二分法和递归搜索最小化字符比较的次数,极大地提高了搜索匹配的 效率,减小查询时间。
【附图说明】
[0029] 图1为本发明高效黑名单搜索方法主流程图;
[0030] 图2为需找最低位置匹配普通字符的方法。
【具体实施方式】
[0031] 下面结合附图和实施例对本发明技术方案做进一步详细说明,以下实施例不构成 对本发明的限定。
[0032] 本发明的总体思路是通过先对黑名单列表进行排序,排序后可采用二分法对普通 字符和通配符(*)分别取最低匹配位置和最高匹配位置,一旦能找到匹配的最低或者最高 位置即进行递归,直到搜索到最后一列,若匹配就输出所有匹配黑名单;否则说明没有搜索 到黑名单。
[0033] 以下以人民币冠字号黑名单搜索为例对本发明的方法做进一步阐述。
[0034] 如图1所示,本发明方法包括以下步骤:
[0035] (1)输入一条待匹配的人民币冠字号码。
[0036] (2)获取初始黑名单列表;所述黑名单由普通字符组成,或由普通字符和通配符组 成;所述普通字符为字母或数字;所述通配符用*表示,代表该位置对应任意字母或数字。
[0037] (3)对步骤(2)获取的初始黑名单列表按照字符的ASII值进行升序排序,得到排序 黑名单列表,如下表所述:
[0039] (4)设置查找排序黑名单列表第一列。
[0040] (5)在排序黑名单列表第1列中查找匹配普通字符的最低位置。
[0041] (6)在排序黑名单列表第1列中查找匹配普通字符的最高字符。
[0042] (7)在排序黑名单列表第1列中查找匹配通配符(*)的最低位置。
[0043] (8)在排序黑名单列表第1列中查找匹配通配符(*)的最高位置。
[0044] (9)递归执行步骤5到8,其中只要查找到匹配,便设置查找排序黑名单列表的列号 递增1,直到最后一列。
[0045] (10)在排序黑名单列表的最后一列查找到匹配字符,说明有匹配的黑名单,输出 该黑名单,否则说明无匹配的黑名单。
[0046] 黑名单搜索方法的最多CPU消耗是字符的比对。以黑名单列表十万为例,最大比对 次数1=1吨(2)(100000)\10\4? 680次;以黑名单列表一百万为例,最大比对次数1=1呢 (2)(1000000) X10X4 ? 1360次。
[0047] 图2示提出了查找匹配普通字符的最低位置的方法,包括以下步骤:
[0048] (1)输入需要比对的冠字号码,设置起始位置start = 0,结束位置end =黑名单列 表数量-1。
[0049] (2)黑名单列表已经排好序,现查找排序后某列匹配字符,按照二分法,取最中间 位置(mid =(起始位置start-结束位置end) /2)字符。
[0050] (3)如果所述最中间字符ASII值小于所述的冠字号码对应位置字符,设置起始位 置8七31^=1111(1+1,611(1位置不变,继续循环查找。
[0051] (4)如果所述最中间字符ASII值大于所述的冠字号码对应位置字符,设置起始位 置end=mid-l,start位置不变,继续循环查找。
[0052] (5)如果所述最中间字符ASII值等于所述的冠字号码对应位置字符,且所述最中 间位置前一位置字符ASII值不等于所述的冠字号码对应位置字符,则找到最低位置,输出 最低位置;否则设置结束位置end=mid-l,start位置不变,继续循环查找。
[0053]以上实施例仅用以说明本发明的技术方案而非对其进行限制,在不背离本发明精 神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变 形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
【主权项】
1. 一种高效黑名单搜索方法,其特征在于,该方法包括如下步骤: (1) 输入一条待匹配号码。 (2) 获取初始黑名单列表;所述黑名单由普通字符组成,或由普通字符和通配符组成; 所述普通字符为字母或数字;所述通配符用*或其他特殊字符表示,代表该位置对应任意字 母或数字。 (3) 对步骤2获取的初始黑名单列表按照字符的ASII值进行升序或降序排序,得到排序 黑名单列表。 (4) 设置查找排序黑名单列表第一列。 (5) 在排序黑名单列表第1列中查找匹配普通字符的最低位置。 (6) 在排序黑名单列表第1列中查找匹配普通字符的最高字符。 (7) 在排序黑名单列表第1列中查找匹配通配符(*)的最低位置。 (8) 在排序黑名单列表第1列中查找匹配通配符(*)的最高位置。 (9) 递归执行步骤5到8,其中只要查找到匹配,便设置查找排序黑名单列表的列号递增 1,直到最后一列。 (10) 在排序黑名单列表的最后一列查找到匹配字符,说明有匹配的黑名单,输出该黑 名单,否则说明无匹配的黑名单。2. 根据权利要求1所述的一种高效黑名单搜索方法,其特征在于,在排序黑名单列中查 找匹配普通字符的最低位置的方法,具体如下: 输入待匹配号码,设置起始位置start = 0,结束位置end =黑名单列表数量-1。 黑名单列表已经排好序,现查找排序后某列匹配字符,按照二分法,取最中间位置mid 处字符,mid=(起始位置start-结束位置end)/2。 如果最中间位置字符ASII值小于输入的待匹配号码对应位置字符,设置起始位置 start=mid+l,end位置不变,继续循环查找。 如果最中间位置字符ASII值大于输入的待匹配号码对应位置字符,设置起始位置end =mid-l,start位置不变,继续循环查找。 如果最中间位置字符ASII值等于输入的待匹配号码对应位置字符,且最中间位置前一 位置字符ASII值不等于输入的待匹配号码对应位置字符,则找到最低位置,输出最低位置; 否则设置结束位置end=mid-l,start位置不变,继续循环查找。 在排序黑名单列中查找匹配普通字符的最高位置的方法、查找匹配通配符(*)的最低 位置的方法和查找匹配通配符(*)的最低位置的方法均同上。3. 根据权利要求1所述的一种高效黑名单搜索方法,特征在于,该方法的最大字符比对 次数Μ计算公式如下: M=log(2)(N) XLX4 其中N为黑名单列表数量,L为黑名单长度,4为每一列采用最多4次二分法计算匹配字 符位置。4. 根据权利要求1所述的一种高效黑名单搜索方法,特征在于,所述黑名单为人民币冠 字号黑名单,长度为10位。
【专利摘要】本发明公开了一种高效黑名单搜索方法,该方法通过先对黑名单列表进行排序,排序后可采用二分法对普通字符和通配符(*)分别取最低匹配位置和最高匹配位置,一旦能找到匹配的最低或者最高位置即进行递归,直到搜索到最后一列,若匹配就输入所有匹配黑名单;否则就说明没有搜索到黑名单。本发明方法极大地提高了搜索匹配的效率,减小了查询时间。
【IPC分类】G06F17/30
【公开号】CN105589973
【申请号】CN201610029766
【发明人】魏伟, 陈祥献, 商茎正, 陈小勇, 虞华锋, 冯国平, 程露露, 谢爱文
【申请人】浙江维融电子科技股份有限公司
【公开日】2016年5月18日
【申请日】2016年1月17日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1