本发明涉及金融支付领域,特别是涉及一种动态支付方法及系统。
背景技术:
随着信息化时代的到来,人们的学习、生活、工作已经离不开信息科技。其中支付系统已经日益发达,逐渐渗透进人们的生活中,慢慢开始取代传统的现金支付和刷卡支付等功能。目前,线上支付正在广泛的应用中。目前银行卡快捷支付在互联网上广泛使用,流程如下:
1、手机用户登录某支付机构APP后,绑定一个19位银行卡号。
2、在超市结算时,用户在APP上选择一张银行卡,手机联网下载一个18-19位支付token,并生成条形码。
3、售货员使用扫码枪,扫描条形码,进行收款结算。
目前存在的问题:
1、支付token必须联网生成,在很多超市,网络信号都不好,用户体验差。
2、有些支付APP采用在网络条件好的情况下预先下载几个支付token的方式,这样支付APP必须长期驻留内存,频繁探测网络,耗电量大。
3、在不安全的网络或手机运行环境中下载支付token,存在被劫听、盗用的风险。
技术实现要素:
本发明的提供了一种动态支付方法及系统,其目的生成动态银行卡号的,采用离线认证的方式,加快支付效率,方便用户使用。
本发明提供的技术方案如下:
本发明提供一种动态支付方法的一个实施例,参考图1所示;包括:步骤S100客户端根据当前时间、用户的银行卡序号、客户端设备标识信息生成动态码;步骤S200客户端根据生成的所述动态码对所属客户端中对应银行卡插件的唯一标识信息进行加密;步骤S300客户端根据所属客户端中的银行卡序号信息、所述动态码、所述步骤S200中加密后的唯一标识信息生成动态银行卡号;步骤S400服务器根据所述动态银行卡号进行验证,当验证成功后,完成支付,否则,返回执行步骤S100。
在本发明中,动态银行卡号的生成过程不需要通过服务器申请等,只需要通过客户端即可实现,生成银行动态码的相关因子不需要通过网络获取,与当前的时间关联;因此生成银行动态码在无网络的情况下依然能够实现,只要服务器银行动态码验证成功,在无网络的情况下或者网络信号都不好的情况同样可以完成购物缴费,提高了用户体验度,采用离线认证的方式,加快支付效率,方便用户使用。
优选的,步骤S200包括:步骤S210客户端获取所属客户端中对应银行卡插件的唯一标识信息;步骤S220根据所述动态码利用FPE算法生成FPE密钥;步骤S230根据步骤S210中所述插件唯一标识信息、所述FPE密钥利用FPE算法对所述插件唯一标识信息进行加密处理。
优选的,所述插件唯一标识信息加密的模型包括:加密后的插件ID=FPE加密(插件ID,FPE密钥);插件ID--所属客户端中对应银行卡插件的唯一标识信息。
在本发明中,在所属客户端中的银行的插件ID是唯一的,对其进行紧密处理,避免了被篡改、盗用的问题,使支付更加安全。
优选的,步骤S400包括:步骤S410通过FPE加密算法的逆运算从所述动态银行卡号中获取所属客户端中对应银行卡插件的唯一标识信息;步骤S420根据所述步骤S410中获取的所述插件的唯一标识信息进一步获取客户端的密钥信息;步骤S430获取服务器在对所述动态卡号进行验证时的当前时间;步骤S440根据步骤S420获取的客户端的密钥信息、步骤S430中获取的服务器对所述动态银行卡号进行验证时的当前时间,利用AES白盒算法生成验证码;步骤S450在预设的时间内将所述动态码与所述验证码进行对比,当验证成功后,完成支付。
优选的,生成所述验证码的模型包括:
验证码1=截位算法(加密算法(硬件信息+TD/60,key));
验证码2=截位算法(加密算法(硬件信息+TD/60+1,key));
验证码3=截位算法(加密算法(硬件信息+TD/60-1,key));
TD--服务器在对所述动态银行卡号进行验证时的当前时间;硬件信息--客户端的标识信息;Key--客户端的密钥信息。
在本发明中,动态银行卡号的生成与验证过程中都用截位算法,这样避免的算法差异造成验证发生错误、不合法的问题;验证过程采用生成动态银行卡号算法时的反推过程,不会出现重复性的验证,使其本发明的验证过程更加严密、可靠。
优选的,生成所述动态码的模型包括:
动态码=截位算法(白盒算法(客户端的标识信息+(T+t)/60));T--生成动态码的当前时间;t--客户端与服务器的同步时间差。
优选的,所述步骤S100中获取客户端与服务器的同步时间差包括:步骤S110获取客户端向服务器发送同步时间请求包的第一时间信息;步骤S120获取服务器接收到所述同步时间请求包的第二时间信息;步骤S130获取服务器返回至客户端的所述同步时间请求包的第三时间信息;步骤S140获取客户端接收所述同步时间请求包的第四时间信息;步骤S150根据所述第一时间信息、所述第二时间信息、所述第三时间信息、所述第四时间信息获取与服务器的所述同步时间差。
优选的,获取客户端与服务器的所述同步时间差的模型为包括:
T1--第一时间信息;T2--第二时间信息;T3--第三时间信息;T4--第四时间信息;d--同步时间的往返延迟时间;t--客户端与服务器的所述同步时间差。
在本发明中,由于动态银行卡号的与时间因子相关,所以采用时间同步可减小甚至消除误差,减少验证不成功的概率,从而使数据交互设备时间保持统一精准,为银行的支付成功做好基础。
优选的,所述动态银行卡号包括:支付机构代码、所属客户端中对应银行卡序号、加密插件唯一标识信息、所述动态码。
一种动态支付方法系统包括:动态码生成模块,客户端根据当前时间、用户的银行卡序号、客户端设备标识信息生成动态码;加密处理模块,客户端根据生成的所述动态码对所属客户端中对应银行卡插件的唯一标识信息进行加密;动态卡号生成模块,客户端根据所属客户端中的银行卡序号信息、所述动态码、所述加密处理模块中加密后的唯一标识信息生成动态银行卡号;动态卡号验证模块,服务器根据所述动态银行卡号进行验证;控制模块,分别与所述动态码生成模块、所述加密处理模块、所述动态卡号生成模块、所述动态卡号验证模块电连接,控制动态码生成模块根据客户端的当前时间、客户端与服务器之间的时间差、客户端的标识信息生成动态码,控制所述加密处理模块根据生成的动态码对所属客户端中对应银行卡插件的唯一标识信息进行加密,根据所属客户端中的银行卡序号信息、所述动态码、进一步控制动态卡号生成模块生成动态银行卡号,根据生成所述动态银行卡号进行支付,在进行支付时控制服务器所述动态卡号验证模块对动态银行卡号进行验证,当服务器验证成功后,完成支付,否则,控制执行所述动态码生成模块重新获取动态码。
在本发明中,客户端与服务器联网的情况下取得两个设备的时间同步,采用离线认证的方式,加快支付效率,方便用户使用;采用白盒密码技术保障移动设备支付安全。
与现有技术相比,本发明提供一种动态支付方法及系统,至少带来以下一种技术效果:
在本发明中,在移动设备上使用本地安全密码模块,离线生成支付token,提高用户体验,避免了有网被盗取隐患,降低使用风险。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对一种动态支付方法及系统特性、技术特征、优点及其实现方式予以进一步说明。
图1是本发明一种动态支付方法一个实施例的流程图;
图2是本发明一种动态支付方法另一个实施例的流程图;
图3是本发明一种动态支付方法另一个实施例的流程图;
图4是本发明一种动态支付方法另一个实施例的流程图;
图5是本发明一种动态支付系统的一个实施例的结构示意图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
本发明提供一种动态支付方法的一个实施例,参考图1所示;包括:步骤S100客户端根据当前时间、用户的银行卡序号、客户端设备标识信息生成动态码;步骤S200客户端根据生成的所述动态码对所属客户端中对应银行卡插件的唯一标识信息进行加密;步骤S300客户端根据所属客户端中的银行卡序号、所述动态码、所述步骤S200中加密后的唯一标识信息生成动态银行卡号;步骤S400服务器根据所述动态银行卡号进行验证,当验证成功后,完成支付,否则,返回执行步骤S100。
具体的,在本实施例中,参考图1所示;动态银行卡号,用于支付过程,防止银行主卡号泄漏,为18-19位数字,根据时间产生变化。在本实施例中动态码生成的使用白盒算法,(白盒算法:将密钥和算法融合的所有算法总称,用于在不安全的移动终端运行环境下,抵抗白盒攻击,保护用户密钥。如AES白盒算法、AES白盒算法、SOTP算法。)SOTP算法是在本公司的另一篇专利(“一种数据处理方法,申请公布号CN 104243494 A”)。在本实施例中包括客户端(即移动终端等通讯工具)、服务器;客户端用于生成动态码,同时对插件ID(银行每一张银行开所属客户端的唯一标识信息)加密,插件ID,在每一个客户端上绑定多张银行卡,客户端自动为每张银行卡分配卡序号,同时根据卡序号,银行卡信息,以及所属的客户端不同,客户端为每张生成对应的插件ID;同一张银行卡可以绑定多个客户端,因此生成的插件ID也不尽相同,通过动态码实现对插件ID进行加密处理;生成的动态银行卡号中包括:支付机构标识、卡序号、插件ID、动态码;服务器用于在支付过程中实现对生成动态银行卡号进行验证,通过解密,利用加密算法的解密过程生成多个验证码,将动态码与生成的多个验证码进行对比,只要动态码与多个验证码其中之一对比相同即可,则动态银行卡号验证成功,完成支付。
在本发明中,动态银行卡号的生成过程不需要通过服务器申请等,只需要通过客户端即可实现,生成银行动态码的相关因子不需要通过网络获取,与当前的时间关联;因此生成银行动态码在无网络的情况下依然能够实现,只要服务器银行动态码验证成功,在无网络的情况下或者网络信号都不好的情况同样可以完成购物缴费,提高了用户体验度,采用离线认证的方式,加快支付效率,方便用户使用。
优选的,步骤S200包括:步骤S210客户端获取所属客户端中对应银行卡插件的唯一标识信息;步骤S220根据所述动态码利用FPE算法生成FPE密钥;步骤S230根据步骤S210中所述插件唯一标识信息、所述FPE密钥利用FPE算法对所述插件唯一标识信息进行加密处理。
优选的,所述插件唯一标识信息加密的模型包括:加密后的插件ID=FPE加密(插件ID,FPE密钥);插件ID--所属客户端中对应银行卡插件的唯一标识信息。
具体的,本实施例是在以上实施例的基础上提供的又一实施例;参考图2所示;在本实施例中以手机为客户端,基于客户端的支付APP离线生成19位动态银行卡号过程包括:假设获取的插件唯一标识(即插件ID=123456789),生成动态码C=6529184;采用FPE加密算法,以7位的动态码C为密钥,对固定的9位插件ID的=123456789加密,加密空间109;
FPE密钥=FPE(插件ID加密空间,动态码C)
=FPE(109,6529184)=FE1HTJ9G;
加密的插件ID=FPE加密算法(插件ID,FPE密钥)
=FPE加密算法(123456789,FE1HTJ9G)=873492745;
FPE算法:Format-Preserving Encryption保留格式加密算法。
在本发明中,在所属客户端中的银行的插件ID是唯一的,对其进行紧密处理,避免了被篡改、盗用的问题,使支付更加安全。
优选的,步骤S400包括:步骤S410通过FPE加密算法的逆运算从所述动态银行卡号中获取所属客户端中对应银行卡插件的唯一标识信息;步骤S420根据所述步骤S410中获取的所述插件的唯一标识信息进一步获取客户端的密钥信息;步骤S430获取服务器在对所述动态卡号进行验证时的当前时间;步骤S440根据步骤S420获取的客户端的密钥信息、步骤S430中获取的服务器对所述动态银行卡号进行验证时的当前时间,利用AES白盒算法生成验证码;步骤S450在预设的时间内将所述动态码与所述验证码进行对比,当验证成功后,完成支付。
优选的,生成所述验证码的模型包括:
验证码1=截位算法(加密算法(硬件信息+TD/60,key));
验证码2=截位算法(加密算法(硬件信息+TD/60+1,key));
验证码3=截位算法(加密算法(硬件信息+TD/60-1,key));
TD--服务器在对所述动态银行卡号进行验证时的当前时间;硬件信息--客户端的标识信息;Key--客户端的密钥信息。
具体的,本实施例是在以上实施例的基础上提供的又一实施例;参考图3所示;服务器获取到支付动态银行卡号后,分三步验证卡号:根据客户端FPE算法逆运算,还原出插件ID。根据插件ID查找客户端白盒算法的密钥key;获取服务器时间TD;使用客户端白盒算法对应的加密算法和时间TD计算3个验证码:
验证码1=截位算法(加密算法(硬件信息+TD/60,key));
验证码2=截位算法(加密算法(硬件信息+TD/60+1,key));
验证码3=截位算法(加密算法(硬件信息+TD/60-1,key));
根据3个验证码比较动态码,如果在预设的60秒有效期内,客户端动态码C与验证码1、验证码2、验证码3中的任意一个相等,则卡号合法。
具体的,动态银行卡号的生成与验证过程中都用截位算法,这样避免的算法差异造成验证发生错误、不合法的问题;验证过程采用生成动态银行卡号算法时的反推过程,不会出现重复性的验证,使其本发明的验证过程更加严密、可靠。
优选的,生成所述动态码的模型包括:
动态码=截位算法(白盒算法(客户端的标识信息+(T+t)/60));T--生成动态码的当前时间;t--客户端与服务器的同步时间差。
优选的,所述步骤S100中获取客户端与服务器的同步时间差包括:步骤S110获取客户端向服务器发送同步时间请求包的第一时间信息;步骤S120获取服务器接收到所述同步时间请求包的第二时间信息;步骤S130获取服务器返回至客户端的所述同步时间请求包的第三时间信息;步骤S140获取客户端接收所述同步时间请求包的第四时间信息;步骤S150根据所述第一时间信息、所述第二时间信息、所述第三时间信息、所述第四时间信息获取与服务器的所述同步时间差。
优选的,获取客户端与服务器的所述同步时间差的模型为包括:
T1--第一时间信息;T2--第二时间信息;T3--第三时间信息;T4--第四时间信息;d--同步时间的往返延迟时间;t--客户端与服务器的所述同步时间差。
具体的,本实施例是在以上实施例的基础上提供的又一实施例;参考图4所示;客户端与服务器在验证过程进行通讯,此时存在数据发动的延迟d,同时两的设备也存在时间不同步的问题,那么设置同步时间差为t;由于在本实施例中动态码的生成与客户端的当前时间相关,同时在进行动态码验证时是通过服务器完成的,因此需要实现两个设备的时间同步,其实现的方法在本实施例中介绍包括:客户机首先向服务器发送一个同步时间请求包,其中包含了该包离开客户机的时间戳T1第一时间信息,当服务器接收到该包时,依次填入包到达的时间戳T2第二时间信息、包离开的时间戳T3第三时间信息,然后立即把包返回给客户机。客户机在接收到响应包时,记录包返回的时间戳T4;客户机用上述4个时间参数就能够计算出2个关键参数:同步时间请求包同步时间的往返延迟时间d;客户端与服务器的所述同步时间差t。
计算得到,
通过4个时间戳求得同步时间差t、往返延迟时间d,实现客户端与服务器的同步,因为一般广域网的网络延时d在10ms~500ms之间,所以客户端时间T+t与服务器时间TD的误差在1秒以内。在生成动态码时客户端保存同步时间差,以及网络数据传输往返延迟时间d。动态码的生成过程包括:假设手机为客户端当前时间T1=10:56:42,手机向服务器发送一个同步时间请求包,T1=10:56:42,当服务器接收到该包时,T2=10:54:21,服务器返回应答包的时间T3=10:54:23,客户机在接收到应答包的时间T4=10:56:46。那么客户机与服务器之间的时钟偏差t=(T2-T1-T4+T3)/2=-142秒。
在本发明中,由于动态银行卡号的与时间因子相关,所以采用时间同步可减小甚至消除误差,减少验证不成功的概率,从而使数据交互设备时间保持统一精准,为银行的支付成功做好基础。
优选的,所述动态银行卡号包括:支付机构代码、所属客户端中对应银行卡序号、加密插件唯一标识信息、所述动态码。
本发明还提供一种动态支付方法系统的一个实施例,参考图5所示,包括:动态码生成模块100,客户端根据当前时间、用户的银行卡序号、客户端设备标识信息生成动态码;加密处理模块200,客户端根据生成的所述动态码对所属客户端中对应银行卡插件的唯一标识信息进行加密;动态卡号生成模块300,客户端根据所属客户端中的银行卡序号信息、所述动态码、所述加密处理模块200中加密后的唯一标识信息生成动态银行卡号;动态卡号验证模块400,服务器根据所述动态银行卡号进行验证;控制模块500,控制动态码生成模块根据客户端的当前时间、客户端与服务器之间的时间差、客户端的标识信息生成动态码,控制所述加密处理模块根据生成的动态码对所属客户端中对应银行卡插件的唯一标识信息进行加密,根据所属客户端中的银行卡序号信息、所述动态码、进一步控制动态卡号生成模块生成动态银行卡号,根据生成所述动态银行卡号进行支付,在进行支付时控制服务器所述动态卡号验证模块对动态银行卡号进行验证,当服务器验证成功后,完成支付,否则,控制执行所述动态码生成模块重新获取动态码。
具体的,在本实施例中,参考图5所示;动态银行卡号,用于支付过程,防止银行主卡号泄漏,为18-19位数字,根据时间产生变化。在本实施例中动态码生成的使用白盒算法,(白盒算法:将密钥和算法融合的所有算法总称,用于在不安全的移动终端运行环境下,抵抗白盒攻击,保护用户密钥。如AES白盒算法、AES白盒算法、SOTP算法。)SOTP算法是在本公司的另一篇专利(“一种数据处理方法,申请公布号CN 104243494 A”)。在本实施例中包括客户端(即移动终端等通讯工具)、服务器;动态码生成模块100则是通过客户端用于生成动态码,同时对插件ID(银行每一张银行开所属客户端的唯一标识信息)加密,插件ID,在每一个客户端上绑定多张银行卡,客户端自动为每张银行卡分配卡序号,同时根据卡序号,银行卡信息,以及所属的客户端不同,客户端为每张生成对应的插件ID;同一张银行卡可以绑定多个客户端,因此生成的插件ID也不尽相同,利用加密处理模块200通过动态码实现对插件ID进行加密处理;动态卡号生成模块300生成的动态银行卡号中包括:支付机构标识、卡序号、插件ID、动态码;服务器用于在支付过程中实现对生成动态银行卡号进行验证,通过解密,利用加密算法的解密过程生成多个验证码,动态卡号验证模块400将动态码与生成的多个验证码进行对比,只要动态码与多个验证码其中之一对比相同即可,则动态银行卡号验证成功,完成支付。控制模块500控制本实施例中的各个块的实施过程,监测各个模块的结果,以执行相应的操作。
在本发明中,动态银行卡号的生成过程不需要通过服务器申请等,只需要通过客户端即可实现,生成银行动态码的相关因子不需要通过网络获取,与当前的时间关联;因此生成银行动态码在无网络的情况下依然能够实现,只要服务器银行动态码验证成功,在无网络的情况下或者网络信号都不好的情况同样可以完成购物缴费,提高了用户体验度,采用离线认证的方式,加快支付效率,方便用户使用。
本发明还提供一种动态支付方法与验证的一个实施例,包括如下:
1、客户端支付APP在联网状态时,静默自动同步时间,计算同步时间差t:
假设手机为客户端当前时间T1=10:56:42,手机向服务器发送一个同步时间请求包,T1=10:56:42,当服务器接收到该包时,T2=10:54:21,服务器返回应答包的时间T3=10:54:23,客户机在接收到应答包的时间T4=10:56:46。那么客户机与服务器之间的时钟偏差t=(T2-T1-T4+T3)/2=-142秒。
2、客户端APP离线生成19位动态银行卡号过程:
第一步:使用白盒算法,根据客户端时间T和时钟偏差t生成7位的动态码C。
假设银行卡序号为1,使用AES白盒算法,插件ID为123456789,当前时间2016-10-1820:50:21,T=1476795021硬件信息为862634038005552;
C=截位算法(AES白盒算法(862634038005552+(1476795021-142)/60))
C=6529184;
第二步:采用FPE加密算法,以7位的动态码C为密钥,对固定的插件ID中的9位加密,加密空间109。
FPE密钥=FPE(插件ID加密空间,动态码C)
=FPE(109,6529184)=FE1HTJ9G;
加密后的插件ID=FPE加密算法(插件ID,FPE密钥)
=FPE加密算法(123456789,FE1HTJ9G)=873492745;
支付动态卡号(支付token)=62+卡序号+加密的插件ID+动态码C
=62 1 873492745 6529184
支付动态卡号(支付token)=支付机构标识+卡序号+插件ID+动态码C;
3.服务器验证支付动态卡号(支付token)流程;
根据客户端第二步的FPE算法逆运算,将87349274还原成123456789;根据插件ID查找客户端AES白盒算法的密钥key,获取服务器时间T’=1476794891,再使用AES算法、密钥key和服务器时间T’计算三个动态码:
验证码1=截位算法(AES算法(硬件信息+1476794891/60,key))
=6529184;
验证码2=截位算法(AES算法(硬件信息+1476794891/60-1,key))
=4826049;
验证码3=截位算法(AES算法(硬件信息+1476794891/60+1,key))
=7254981;
比较动态码,因为验证码1等于动态码C,所以验证支付token成功。在本实施例中支付token:动态银行卡号,用于支付过程,防止银行主卡号泄漏。本方案中,为18-19位数字,根据时间产生变化;白盒算法:将密钥和算法融合的所有算法总称,用于在不安全的移动终端运行环境下,抵抗白盒攻击,保护用户密钥。如AES白盒算法、AES白盒算法、SOTP算法。截位算法:将二进制字符数组转换成固定长度整数密码的过程;FPE算法:Format-Preserving Encryption保留格式加密算法。
在本发明中提供的以上的各个实施例中,时间T的换算时间格式,时间格式采用任意方式转化都可以,只要客户端和服务器取的时间是同一个标准和单位(秒)就行,比如采用格林威治标准时间,例如"2016-10-18 20:50:21"转换为对应格林威治标准时间"1970年1月1日00:00:00"的一串数字,单位为秒。
在本发明中,客户端与服务器联网的情况下取得两个设备的时间同步,采用离线认证的方式,加快支付效率,方便用户使用;采用白盒密码技术保障移动设备支付安全。
在本发明中,与现有技术相比,在移动设备上使用本地安全密码模块,离线生成支付token,提高用户体验,降低使用风险。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。