本公开总体涉及互联网技术领域,具体而言,涉及一种验证方法、用于验证的系统、验证码系统以及验证装置。
背景技术:
手机验证是企业给用户(消费者)的一个凭证,通过向手机发送验证码来验证身份,目前使用的最普遍的有各大银行网上银行、网上商城、团购网站、票务公司等。手机验证利用验证码来注册会员,大大降低了非法注册、恶意注册的数据。
回拨电话又称电话回呼(或称网站电话回呼系统、免费电话回呼、网页回呼系统、web呼叫中心、网页800、网页电话回拨)是来访客户在企业网站上提交了自己的电话号码信息后,企业的自动回呼语音服务平台向客户发起的语音回呼。当企业向用户发起手机验证的时候,往往通过短信或回拨电话的方式将验证发送给用户,用户在阅读短信或接听回拨电话后,通过人工分辨其中的验证码,输入相关验证码后完成验证。
由于企业发送短信或回拨电话时,企业需要承担大量的费用,用户也需要自己人工去分辨其中的验证码,影响用户体验。因此,需要一种新的验证方法、用于验证的系统、验证码系统以及验证装置。
在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现要素:
本公开提供一种验证方法、用于验证的系统、验证码系统以及验证装置,能够通过回拨电话与未接来电的回拨时长进行监控,并根据其组合识别出验证码,再经验证码系统进行验证,提高验证码的安全性。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通 过本公开的实践而习得。
根据本公开的一方面,提供一种验证方法,包括:
发起验证请求,所述验证请求中包含的信息包括发送所述验证请求的手机号码以及验证发起时间;
接收并存储由多个验证码构成的验证码队列,所述验证码为根据所述验证请求生成,且所述验证码队列中包含编号唯一的一个与回拨号码以及回拨时长相对应的验证码;
当有来电号码的来电时,根据所述来电号码与所述验证码队列中回拨号码进行对比,如果所述验证码队列中存在与所述来电号码相对应的回拨号码,则拦截所述来电号码的来电,并对所述来电号码的来电时间进行计时,在来电主动挂断后获取回拨时长,所述回拨时长为所述回拨号码来电且未接通的时长;
根据所述回拨号码以及所述回拨时长生成并发送验证报文,所述验证报文中包含的信息包括:手机号码、回拨号码、回拨时长以及验证编号,所述验证编号为在所述验证码队列中每个验证码唯一的编号。
根据本公开的一实施方式,根据所述验证请求生成所述验证码的步骤包括:
根据所述验证请求中的手机号码以及验证发起时间,利用随机算法选择唯一对应的回拨号码以及唯一对应的回拨时长,构成所述验证码。
根据本公开的一实施方式,所述随机算法包括:
将所述手机号码与所述验证发起时间相乘得到乘积;
所述乘积除以第一预设值,所得余数加1为所选择的回拨号码的编号;
所述乘积除以第二预设值,所得余数加1位所选择的回拨时长;
其中所述第一预设值为对号码池中所有回拨号码进行编号所得的编号的最大值,所述号码池中回拨号码的编号从1~p,所述第二预设值为所述回拨时长可选范围的最大值,所述回拨时长的选择范围为1~n秒。
根据本公开的一实施方式,所述验证码队列中包括m个验证码,验证编号依次为1至m,其中m≤n*p;
每个所述验证码所包含的信息包括:手机号码、回拨号码、回拨时长以及验证编号。
根据本公开的一实施方式,生成所述验证码队列之后,所述验证方法还包括:
根据从所述验证码队列中选择的所述回拨号码和所述回拨时长生成并发送回拨请求,所述回拨请求中包含的信息包括:回拨号码、回拨时长以及手机号码。
根据本公开的一实施方式,接收到所述回拨请求之后,所述验证方法还包括:
根据所述回拨请求中的手机号码发起电话请求,并于所述电话请求持续的时长达到回拨时长时挂断电话。
根据本公开的一实施方式,发送所述验证报文之后,所述验证方法还包括:
根据所述验证报文与所述验证码队列进行对比,如果在所述验证码队列中存在与所述验证报文有相同的验证编号,则通过验证。
根据本公开的另一方面,还提供一种用于验证的系统,所述系统包括:
客户端,用于发起验证请求、监控回拨号码以及回拨时长,并根据所述回拨号码以及所述回拨时长识别出验证码;
验证码系统,用于接收所述验证请求,随机生成验证码,并根据所述验证码生成回拨请求,还用于对所述客户端反馈的验证码进行验证;以及
回拨电话系统,用于根据所述回拨请求发起电话请求,所述电话请求中包含手机号码、回拨号码以及回拨时长。
根据本公开的一实施方式,所述客户端包括:
请求模块,用于发送所述验证请求,所述验证请求中包含的信息包括发送所述验证请求的手机号码以及验证发起时间;
存储模块,用于接收并存储由多个所述验证码构成的验证码队列;
来电对比模块,用于当有来电号码的来电时,根据所述来电号码与所述验证码队列中验证码的回拨号码进行对比,如果所述验证码队列中存在与所述回拨号码相对应的手机号码,则拦截所述来电号码的来电,并对所述来电号码的来电时间进行计时,在来电主动挂断后获取回拨时长,所述回拨时长为所述回拨号码来电且未接通的时长;以及
验证报文发送模块,用于根据所述来电号码以及所述来电时长生成并发 送验证报文,所述验证报文中包含的信息包括:手机号码、回拨号码、回拨时长以及验证编号,所述验证编号为在所述验证码队列中每个验证码唯一的编号。
根据本公开的一实施方式,所述验证码系统包括:
验证码生成模块,用于响应于所述验证请求,生成并存储由多个验证码构成的验证码队列,所述验证码为根据所述验证请求生成,且所述验证码队列中包含编号唯一的一个与回拨号码以及回拨时长相对应的验证码。
根据本公开的一实施方式,所述验证码系统还包括:
回拨请求生成模块,用于根据从所述验证码队列中选择的所述回拨号码和所述回拨时长生成并发送所述回拨请求,所述回拨请求中包含的信息包括:回拨号码、回拨时长以及手机号码。
根据本公开的一实施方式,所述回拨电话系统接收到所述回拨请求之后,根据所述回拨请求中的手机号码以及回拨号码发起所述电话请求,所述电话请求的发起端为回拨号码所对应的设备,所述电话请求的接收端为所述手机号码所对应的设备,并于所述电话请求持续的时长达到回拨时长时挂断电话。
根据本公开的一实施方式,所述验证码系统还包括:
验证模块,用于根据所述验证报文与所述验证码系统生成的验证码队列进行对比,如果在所述验证码队列中存在与所述验证报文有相同的验证编号,则通过验证。
根据本公开的另一方面,还提供一种验证方法,包括:
接收验证请求,所述验证请求中包含的信息包括发送所述验证请求的手机号码以及验证发起时间;
响应于所述验证请求,生成并存储由多个验证码构成的验证码队列,所述验证码为根据所述验证请求生成,且所述验证码队列中包含编号唯一的一个与回拨号码以及回拨时长相对应的验证码;
接收验证报文,并将所述验证报文与所述验证码队列进行对比,如果在所述验证码队列中存在与所述验证报文有相同的记录,则通过验证。
根据本公开的另一方面,还提供一种用于验证的验证码系统,包括:
验证请求接收模块,用于接收验证请求,所述验证请求中包含的信息包 括发送所述验证请求的手机号码以及验证发起时间;
验证码生成模块,用于响应于所述验证请求,生成并存储由多个验证码构成的验证码队列,所述验证码为根据所述验证请求生成,且所述验证码队列中包含编号唯一的一个与回拨号码以及回拨时长相对应的验证码;
验证模块,用于接收验证报文,并将所述验证报文与所述验证码队列进行对比,如果在所述验证码队列中存在与所述验证报文有相同的验证编号,则通过验证。
根据本公开的另一方面,还提供一种验证装置,包括:
处理器;以及
存储器,用于存储指令;
所述处理器执行所述指令用于:
发起验证请求,所述验证请求中包含的信息包括发送所述验证请求的手机号码以及验证发起时间;
接收并存储由多个验证码构成的验证码队列,所述验证码为根据所述验证请求生成,且所述验证码队列中包含编号唯一的一个与回拨号码以及回拨时长相对应的验证码;
当有来电号码的来电时,根据所述来电号码与所述验证码队列中验证码的回拨号码进行对比,如果所述验证码队列中存在与所述来电号码相对应的回拨号码,则拦截所述来电号码的来电,并对所述来电号码的来电时间进行计时,在来电主动挂断后获取回拨时长,所述回拨时长为所述回拨号码来电且未接通的时长;
根据所述回拨号码以及所述回拨时长生成并发送验证报文,所述验证报文中包含的信息包括:手机号码、回拨号码、回拨时长以及验证编号,所述验证编号为在所述验证码队列中每个验证码唯一的编号。
根据本公开的技术方案,能够得到以下技术效果:
通过回拨电话与回拨时长的组合自动识别出验证码,提高验证码的安全性,通过记录未接来电的时长,节省通信费用,降低验证成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。
图1示意性示出根据本公开示例实施方式的用于验证的系统的示意图。
图2示意性示出根据本公开示例实施方式的验证方法的步骤流程图。
图3示意性示出根据本公开示例实施方式的实现图2验证方法的客户端。
图4示意性示出根据本公开示例实施方式的验证方法的步骤流程图。
图5示意性示出根据本公开示例实施方式的实现图4验证方法的客户端。
图6示意性示出本公开提供的验证方法的整体流程图。
图7示意性示出根据本公开示例实施方式的验证装置的示意图。
图8示意性示出根据本公开示例实施方式的验证系统的示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现、材料或者操作以避免喧宾夺主而使得本公开的各方面变得模糊。
附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/ 或微控制器装置中实现这些功能实体。
图1示意性示出根据本公开示例实施方式的用于验证的系统。该系统1000中包括客户端100、验证码系统200以及回拨电话系统300,基于tcp/ip协议实现的消息机制,通过回拨电话系统300、验证码系统200、客户端100(例如手机)之间的信息和数据交互,通过客户端100对回拨电话系统300发起的回拨请求中的回拨电话号码、电话呼叫长度的监控,自动识别出验证码,并由客户端100将该验证码回传给企业的验证码系统200,完成整个验证过程。
其中各个系统的主要功能如下:
客户端100用于向验证码系统200发起请求,记录验证码下发的验证码可选清单,监控回拨电话号码和回拨时长,自动识别验证码并回传给验证码系统200。验证码系统200接收用户的验证请求,并随机生成一个验证码,将验证码信息拆分为回拨电话系统300可识别的信息,即根据验证码生成回拨请求,用以呼叫用户,并对用户反馈的验证码进行验证。回拨电话系统300拥有若干个不同的回拨电话号码,根据验证码系统200发来的回拨请求发起电话请求,按照不同的手机号码n和回拨时长t2,对用户发起呼叫,其中电话请求中包含手机号码n、回拨号码k以及回拨时长t2。
在本实施例中,客户端100与验证码系统200之间采用的通信协议为tcp/ip协议,但并不以此为限。
以下对各个系统的实现方法以及组成作进一步说明。
图2示意性示出根据本公开示例实施方式的验证方法的步骤流程图。该方法可以通过图1中的客户端100来实现,但本公开不限于此。
如图2所示,在步骤s11中,发起验证请求。在本实施例中,验证请求中包含的信息可以包括发送验证请求的手机号码n以及验证发起时间t1。当用户需要发起验证时,需要通过客户端100填写手机号码n,客户端100以约定格式的报文向验证码系统200发起验证请求,验证请求的信息包括:用户的手机号码n、验证发起时间t1等,通常验证发起时间t1精确到毫秒。在本实施例中的约定格式可以是json(javascriptobjectnotation,javascript对象表示法)格式。
在步骤s12中,接收并存储由多个验证码构成的验证码队列,验证码为 根据验证请求生成。
在步骤s13中,当有来电号码的来电时,根据来电号码与验证码队列中验证码的回拨号码k进行对比,如果验证码队列中存在与来电号码相对应的回拨号码k,则拦截来电号码的来电,并对来电号码的来电时间进行计时,在来电主动挂断后获取回拨时长t2,所述回拨时长为所述回拨号码来电且未接通的时长。
在步骤s14中,根据回拨号码k以及回拨时长t2生成并发送验证报文,验证报文中包含的信息包括:手机号码n、回拨号码k、回拨时长t2以及验证编号。
在步骤s12中,客户端100将验证请求发送给验证码系统200,验证码系统200则根据验证请求生成验证码,具体的步骤包括:根据验证请求中的手机号码n以及验证发起时间t1,利用随机算法选择一个唯一对应的回拨号码k以及唯一对应的回拨时长t2,构成验证码。为方便后续步骤中的计算,通常还需要将验证发起时间t1转换为形式20151117120000的格式。
在本实施例中可以采用的随机算法包括:将手机号码n与验证发起时间t1相乘得到乘积;乘积除以第一预设值,所得余数加1为所选择的回拨号码k的编号;乘积除以第二预设值,所得余数加1位所选择的回拨时长t2。其中第一预设值为对号码池中所有回拨号码k进行编号所得的编号的最大值,号码池中回拨号码k的编号从1~p,第二预设值为回拨时长t2可选范围的最大值,回拨时长t2的选择范围为1~n秒。
例如以p=100(即号码池中的回拨号码k编号为1~100),n=40(回拨时长t2的范围为1~40秒)为例,验证码系统200根据客户端100上传的手机号码n和验证发起时间t1,随机从回拨电话系统300中的号码池中选定一个回拨号码k,并选择一个回拨的时长。该随机算法可选多个,其中一个为:将手机号码n与验证发起时间t1(此时t1已转换为形式20151117120000格式)相乘得出积w,设可选号码池为100个,此批号码从1到100编号,将w除以100取余,余数加1的编号所对应的号码即为此次的回拨号码k;回拨的时间从1秒到40秒之间,将w除以40取余,余数加1即为此次的回拨时长t2。如果w除以100得到的余数为4,则从号码池编号1~100的号码中选择编号为5的号码作为回拨号码k;w除以40的余数为12,则回 拨时长t2为13秒。
需要说明的是,本实施例中提供的根据手机号码n和验证发起时间t1随机选择回拨号码k和回拨时长t2的随机算法仅为示例,并不仅限于此,只要可以实现根据手机号码n和验证发起时间t1随机生成一个验证编号唯一的验证码,该验证码中包含的回拨号码k以及回拨时长t2的信息也都是唯一的即可。另外,验证编号为在验证码队列中每个验证码唯一的编号,也就是根据验证编号即可得知在验证码队列中与该验证编号唯一对应的验证码。
步骤s12中接收的验证码队列为验证码系统200生成的一个长度为m的验证码队列,即验证码队列中包括m个验证码,验证编号依次为1至m,其中m≤n*p。仍以上述p=100,n=40为例,验证码队列中每个对象含有一个回拨号码k和回拨时长t2的设置,设回拨电话号码池号码个数为100,回拨时间从1秒到40秒之间,m的长度不大于40*100=4000。同时还对得到的每一个验证码的编号进行记录,也就得到验证编号q,验证编号q的范围为1~m。在本实施例中,能够根据回拨号码k以及回拨时长t2的不同组合生成不同的验证码,在验证码队列中有且只有一个编号为q的对象所存储的回拨电话号码和回拨时长t2均为验证码系统200中随机生成的回拨号码k和回拨时长t2,验证码系统200将此次用户验证对应的手机号码n、回拨号码k、回拨时长t2及对应的验证编号q记录到本地的数据库中。验证码系统200同时通过tcp/ip协议以json格式的报文向客户端100回传该验证码队列,因此客户端100所接收的验证码队列中的每个验证码所包含的信息包括:手机号码n、回拨号码k、回拨时长t2以及验证编号。
同时,验证码系统200中生成验证码队列之后,还根据从验证码队列中选择的回拨号码k和回拨时长t2生成回拨请求,并将该回拨请求发送给回拨电话系统300,回拨请求中包含的信息包括:回拨号码k、回拨时长t2以及手机号码n。回拨电话系统300接收到该回拨请求之后,根据回拨请求中的手机号码n发起电话请求,并于电话请求持续的时长达到回拨时长t2时挂断电话。即通过回拨电话系统300选择回拨号码为k的通话发起端,向手机号码n的客户端100发起电话请求,并在用户未接电话时长达到t2的情况下挂断电话。
在步骤s13中,手机号码n的客户端100在接收到验证码系统200发出的验证码队列后,也将验证码队列在客户端100的本地进行存储。当接收到回拨电话系统300的电话请求之后,客户端100截获该电话请求的来电号码(就是生成验证码时选择的回拨号码k),并将其与本地数据存储的验证码队列进行对比,如果该来电号码存在于该验证码队列中,也就是该来电号码与验证码队列其中一个验证码的回拨号码相同,即在后台拦截该来电电话,且不提醒用户接听该来电。同时对该来电计时,待此电话主动挂断后,客户端100获取到此时来电的时长(即为回拨时长t2),同时根据此次来电的回拨号码k,在验证码队列中选中存储有未接来电时长(即回拨时长t2)和来电号码(即回拨号码k)的对象,客户端100通过tcp/ip协议以json格式的报文向验证码系统200发送验证报文,验证报文所包含的信息包括:用户验证所对应的手机号码n、回拨号码k、回拨时长t2及对应的验证编号q。
客户端100向验证码系统200发送验证报文之后,验证码系统200根据验证报文与验证码系统200生成的验证码队列进行对比,如果在验证码系统200本地的验证码队列中存在与客户端100发送来的验证报文有相同的记录,则通过验证,否则驳回验证。在本实施例中,有相同的记录就是指在验证码系统200的本地数据库中存储的验证码队列中恰好有一个与客户端100发送来的验证报文中有相同的手机号码n、回拨号码k、回拨时长t2以及验证编号q,则通过验证。由于验证码队列中根据验证编号即可确定出唯一的一个验证码,因此此处“相同的记录”实质上就是指“相同的验证编号”。
在本实施例中,客户端100发起验证请求、接收验证码队列以及发送验证报文时采用的通信协议可以为tcp/ip协议(transmissioncontrolprotocol/internetprotocol,传输控制协议/因特网互联协议),但并不以此为限。
需要注意的是,图2仅是根据本公开示例实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,图2所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
图3示意性示出根据本公开示例实施方式的客户端100。该客户端100 基于上述图2所提供的方法实现基于未接来电完成验证的过程。
如图3所示,客户端100中包括请求模块110、存储模块120、来电对比模块130和验证报文发送模块140。
请求模块110用于发送验证请求,其中验证请求中包含的信息包括发送验证请求的手机号码n以及验证发起时间t1。存储模块120用于接收并存储由多个验证码构成的验证码队列。来电对比模块130用于当有来电号码的来电时,根据来电号码与验证码队列中验证码的回拨号码k进行对比,如果验证码队列中存在与来电号码相对应的回拨号码k,则拦截来电号码的来电,并对来电号码的来电时间进行计时,在来电主动挂断后获取未接来电的来电时长。验证报文发送模块140用于根据回拨号码以及回拨时长生成并发送验证报文,验证报文中包含的信息包括:手机号码n、回拨号码k、回拨时长t2以及验证编号q。
在本实施例中,客户端100发起验证请求、接收验证码队列以及发送验证报文时采用的通信协议为tcp/ip协议。
图4示意性示出根据本公开示例实施方式的验证方法的步骤流程图。该方法可以通过图1中的验证码系统200来实现,但本公开不限于此。
如图4所示,在步骤s21中,接收验证请求,验证请求中包含的信息包括发送验证请求的手机号码n以及验证发起时间t1。在本实施例中,验证码系统200以约定格式接收客户端100发送来的验证请求,通常验证发起时间t1精确到毫秒,约定格式可以是json(javascriptobjectnotation,javascript对象表示法)格式。
在步骤s22中,响应于验证请求,生成并存储由多个验证码构成的验证码队列,验证码为根据验证请求生成,且验证码队列中包含编号唯一的一个与回拨号码以及回拨时长相对应的验证码。
在步骤s23中,接收验证报文,并将验证报文与验证码队列进行对比,如果在验证码队列中存在与验证报文有相同的验证编号,则通过验证。
步骤s22中,响应于验证请求生成验证码的步骤包括:根据验证请求中的手机号码n以及验证发起时间t1,利用随机算法选择一个唯一对应的回拨号码k以及唯一对应的回拨时长t2,构成验证码。为方便后续步骤中的计算,通常还需要将验证发起时间t1转换为形式20151117120000的格式。
在本实施例中可以采用的随机算法包括:将手机号码n与验证发起时间t1相乘得到乘积;乘积除以第一预设值,所得余数加1为所选择的回拨号码的编号;乘积除以第二预设值,所得余数加1位所选择的回拨时长。其中第一预设值为对号码池中所有回拨号码进行编号所得的编号的最大值,号码池中回拨号码的编号从1~p,第二预设值为回拨时长可选范围的最大值,回拨时长的选择范围为1~n秒。
在本实施例中,验证码队列中包括m个验证码,验证编号依次为1至m,其中m≤n*p,每个验证码所包含的信息包括:手机号码n、回拨号码、回拨时长以及验证编号。
步骤s22中生成验证码队列之后,将验证码队列存储在本地数据库中,进步一步,该验证方法还包括:
在步骤s24,根据从验证码队列中选择的回拨号码k和回拨时长t2生成并发送回拨请求,回拨请求中包含的信息包括:回拨号码、回拨时长以及手机号码n。
需要说明的是,图4中步骤s24在步骤s22与步骤s23之间,但并不表示限定步骤顺序仅此顺序,还可以是其他顺序。
回拨电话系统300接收到验证码系统200发来的回拨请求之后,根据回拨请求中的手机号码n发起电话请求,并于电话请求持续的时长达到回拨时长时挂断电话。即通过回拨电话系统300选择回拨号码为k的通话发起端,向手机号码n的客户端100发起电话请求,并在用户未接电话时长达到t2的情况下挂断电话。
在本实施例中,验证码系统200接收验证请求以及接收验证报文时采用的通信协议为tcp/ip协议,但并不以此为限。
需要注意的是,图4仅是根据本公开示例实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,图4所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
图5示意性示出根据本公开示例实施方式的验证码系统200。该验证码系统200基于上述图4所提供的方法实现基于未接来电完成验证的过程。
如图5所示,验证码系统200包括:验证请求接收模块210、验证码生 成模块220、验证模块230和回拨请求生成模块240。
验证请求接收模块210用于接收验证请求。验证码生成模块220用于响应于验证请求,生成并存储由多个验证码构成的验证码队列,验证码为根据验证请求生成。验证模块230用于接收验证报文,并将验证报文与验证码队列进行对比,如果在验证码队列中存在与验证报文有相同的验证编号,则通过验证。
在本实施例中,验证请求接收模块210接收的验证请求中包含的信息包括发送验证请求的手机号码n以及验证发起时间t1。验证码生成模块220根据验证请求中的手机号码n以及验证发起时间t1,利用随机算法选择一个唯一对应的回拨号码k以及唯一对应的回拨时长t2,构成验证码。
在本实施例中,验证码生成模块220包括:第一计算子模块、第二计算子模块和第三计算子模块。
第一计算子模块用于将手机号码n与验证发起时间t1相乘得到乘积。第二计算子模块用于乘积除以第一预设值,所得余数加1为所选择的回拨号码的编号。第三计算子模块用于乘积除以第二预设值,所得余数加1位所选择的回拨时长,其中第一预设值为对号码池中所有回拨号码进行编号所得的编号的最大值,号码池中回拨号码的编号从1~p,第二预设值为回拨时长可选范围的最大值,回拨时长的选择范围为1~n秒。
验证码生成模块220生成的验证码队列中包括m个验证码,验证编号依次为1至m,其中m≤n*p,每个验证码所包含的信息包括:手机号码n、回拨号码k、回拨时长t2以及验证编号q。
回拨请求生成模块240用于根据从验证码队列中选择的回拨号码和回拨时长生成并发送回拨请求,回拨请求中包含的信息包括:回拨号码k、回拨时长t2以及手机号码n。
验证模块230在验证过程中所判断的相同的记录为在验证码队列中存在与验证报文有相同的验证编号,则通过验证。
另外,本实施例中验证码生成模块220接收验证请求以及接收验证报文时采用的通信协议为tcp/ip协议,但并不以此为限。
基于上述图1~图5所示的系统以及验证方法,图6示意性示出本公开提供的验证方法的整体流程。
如图6所示,在步骤s61中,用户通过客户端100向验证码系统200发起验证。
当用户需要发起验证时,需要通过客户端100填写手机号码,客户端100以json的格式报文向验证码系统200发起验证请求,验证的信息包括:用户手机号码n、验证发起时间t1(精确到毫秒)等;
如图6所示,在步骤s62中,验证码系统200随机选定回拨电话号码和回拨时长。
验证码系统200根据客户端100上传的用户手机号码n和验证发起时间t1,随机从回拨电话系统中的号码池中选定一个唯一对应的回拨号码,并选择一个唯一对应的回拨的时长。该随机算法可选多个,其中一个为:将用户手机号码n与验证发起时间t1(t1已转换为形式20151117120000格式)相乘得出积w,设可选号码池为100个,此批号码从1到100编号,将w除于100取余,余数对应的编号号码即为此次回拨的号码;回拨的时间从1秒到40秒之间,将w除于39取余,余数加1即为此次回拨的时长。
如图6所示,在步骤s63中,验证码系统200生成可选验证码队列并回传客户端100。
验证码系统200随机生成一个长度为m的验证码队列,队列从1到m编号,此编号为此次的验证编码,队列中每个对象含有一个回拨电话号码和回拨时长的设置,设回拨电话号码池号码个数为p,回拨时间从1秒到40秒之间,m的长度不大于40*p。验证码随机生成此队列,其中有且只有一个编号为q的对象所存储的回拨电话号码和回拨时长均为步骤s62中随机生成的回拨号码k和回拨时长t2,验证码系统200将此次用户验证对应的用户手机号n、回拨号码k,回拨时长t2、及对应的验证编号q记录到数据库中。验证码系统200同时通过tc/ip协议以json格式的报文向客户端100回传该验证码队列。
如图6所示,在步骤s64中,验证码系统200向回拨电话系统发起回拨请求。
验证码系统200以json的格式报文向回拨电话系统发起回拨请求,该电话请求的发送端为回拨号码k所对应的设备,电话请求的接收端为手机号码n所对应的设备。每个回拨请求信息包括:回拨号码k、回拨时长t2、用户手机号n等。回拨电话系统在接收到此请求后,根据用户手机号码n发起电 话请求,并在用户未接电话时长达到回拨时长t2后挂断电话。
如图6所示,在步骤s65中,客户端100监听回拨电话时长并选择验证编号。
客户端100在接受到验证码系统200发出的验证码队列后,在手机本地存储。当接受到回拨电话系统后,客户端100截获该来电电话号码后,比对本地的验证码队列,如果该号码存在于该队列中,即在后台拦截该电话,也不提醒用户接听该来电。同时对该来电计时,待此电话主动挂断后,客户端100获取到此时回拨时长t2,同时根据此次回拨的电话号码k,在验证码队列中选中存储有回拨时长t2和电话号码k的对象,客户端100通过tcp/ip协议以json格式的报文向验证码系统200发送验证报文,信息包括:用户验证对应的用户手机号n、回拨号码k、回拨时长t2及对应的验证编号q。
如图6所示,在步骤s66中,验证码系统200验证手机验证码。
验证码系统200在收到客户端100回传的验证报文后,根据用户手机号n、回拨号码k、回拨时长t2及对应的验证编号q比对数据库中是否具有相同的验证编号,如果有即可通过验证,否则驳回验证。
图7示意性示出根据本公开示例实施方式的验证装置。该验证装置可以为但不限于客户端,例如手机。如图7所示,该验证装置700包括处理器710和用于存储指令的存储器720。其中处理器710执行指令用于:发起验证请求;接收并存储由多个验证码构成的验证码队列,验证码为根据验证请求生成;当有来电号码的来电时,根据来电号码与验证码队列中手机号码进行对比,如果验证码队列中存在与来电号码相对应的回拨号码,则拦截来电号码的来电,并对来电号码的来电时间进行计时,在来电主动挂断后获取未接来电的来电时长;根据来电号码以及来电时长生成并发送验证报文,验证报文中包含的信息包括:手机号码、回拨号码、回拨时长以及验证编号。
图8示意性示出根据本公开示例实施方式的验证系统。该验证系统可以为但不限于企业的服务端,例如企业设定的验证码系统。如图8所示,该验证系统800包括处理器810和用于存储处理器可执行指令的存储器820。其中处理器被配置为:
接收验证请求;响应于验证请求,生成并存储由多个验证码构成的验证码队列,验证码为根据验证请求生成;接收验证报文,并将验证报文与验证 码队列进行对比,如果在验证码队列中存在与验证报文有相同的验证编号,则通过验证。
根据本公开的技术方案,能够得到以下技术效果:
通过回拨电话与回拨时长的组合自动识别出验证码,提高验证码的安全性,通过记录未接来电的时长,节省通信费用,可以使企业降低验证成本。同时由于系统可以自动地完成整个手机验证的过程,提高了用户体验。
应清楚地理解,本公开描述了如何形成和使用特定示例,但本公开的原理不限于这些示例的任何细节。相反,基于本公开公开的内容的教导,这些原理能够应用于许多其它实施方式。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
以上具体地示出和描述了本公开的示例性实施方式。应可理解的是,本公开不限于这里描述的详细结构、设置方式或实现方法;相反,本公开意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。