一种签名验证方法、终端及系统与流程

文档序号:11236589阅读:437来源:国知局
一种签名验证方法、终端及系统与流程

本发明涉及网络安全领域,尤其涉及一种签名验证方法、终端及系统。



背景技术:

接口调用方和接口提供方在进行数据交互时,为了保证数据的安全性,一般需要对应用程序编程接口(applicationprogramminginterface,api)进行签名验证。目前,对api接口进行签名验证需要使用接口调用方和接口提供方约定的密钥。由于该密钥存在被泄露或暴力破解的风险,因此,上述api接口签名验证过程的安全性较低,难以保证数据交互的安全性。



技术实现要素:

本发明实施例提供一种签名验证方法、终端及系统,以提高签名验证和数据交互的安全性。

第一方面,本发明实施例提供了一种签名验证方法,包括:

获取应用程序接口请求参数及当前时间戳;

根据应用程序接口请求参数及当前时间戳得到第一签名值;

根据应用程序接口请求参数、当前时间戳及第一签名值构造目标请求;

将目标请求发送至接口提供方,以使接口提供方根据目标请求生成第二签名值;

接收接口提供方所发送的验证结果,该验证结果由接口提供方比对第一签名值和第二签名值所得。

第二方面,本发明实施例提供了一种签名验证终端,包括:

获取单元,用于获取应用程序接口请求参数及当前时间戳;

处理单元,用于根据应用程序接口请求参数及当前时间戳得到第一签名值;

构造单元,用于根据应用程序接口请求参数、当前时间戳及第一签名值构造目标请求;

发送单元,用于将目标请求发送至接口提供方,以使接口提供方根据目标请求生成第二签名值;

接收单元,用于接收接口提供方所发送的验证结果,该验证结果由接口提供方比对第一签名值和第二签名值所得。

第三方面,本发明实施例还提供了一种签名验证方法,包括:

接收接口调用方所发送的目标请求,该目标请求中的请求参数由接口调用方的应用程序接口请求参数、接口调用方的第一签名值及当前时间戳所得,该第一签名值由应用程序接口请求参数和当前时间戳所得;

根据目标请求中的应用程序接口请求参数和当前时间戳得到第二签名值;

比对第一签名值及第二签名值以得到验证结果。

第四方面,本发明实施例还提供了一种签名验证终端,包括:

接收单元,用于接收接口调用方所发送的目标请求,该目标请求中的请求参数由接口调用方的应用程序接口请求参数、接口调用方的第一签名值及当前时间戳所得,该第一签名值由应用程序接口请求参数和当前时间戳所得;

处理单元,用于根据目标请求中的应用程序接口请求参数和当前时间戳得到第二签名值;

比对单元,用于比对第一签名值及第二签名值以得到验证结果。

第五方面,本发明实施例还提供了一种签名验证系统,包括第一终端及第二终端。其中,该第一终端如上述第二方面所述,第二终端如上述第四方面所述。

本发明实施例,先基于应用程序接口请求参数及当前时间戳得到第一签名值及第二签名值,再通过比对第一签名值及第二签名值以得到验证结果,提高了签名验证和数据交互的安全性。

附图说明

为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明第一实施例提供的签名验证方法的示意流程图;

图2是本发明第二实施例提供的签名验证方法的示意流程图;

图3是本发明第三实施例提供的签名验证方法的示意流程图;

图4是本发明第四实施例提供的签名验证方法的示意流程图;

图5是本发明第五实施例提供的签名验证方法的示意流程图;

图6是本发明第一实施例提供的签名验证终端的示意结构图;

图7是本发明第二实施例提供的签名验证终端的示意结构图;

图8是本发明第三实施例提供的签名验证终端的结构示意图;

图9是本发明第一实施例提供的签名验证系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

具体实现中,本发明实施例中描述的终端包括但不限于诸如具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的移动电话、膝上型计算机或平板计算机之类的其它便携式设备。还应当理解的是,在某些实施例中,所述设备并非便携式通信设备,而是具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的台式计算机。

在接下来的讨论中,描述了包括显示器和触摸敏感表面的终端。然而,应当理解的是,终端可以包括诸如物理键盘、鼠标和/或控制杆的一个或多个其它物理用户接口设备。

请参考图1,是本发明第一实施例提供的签名验证方法的示意流程图,如图所示,该方法可包括以下步骤:

s101,获取应用程序接口请求参数及当前时间戳。

当两个终端需要进行数据交互时,通常需要先对应用程序编程接口(applicationprogramminginterface,api)进行签名验证。该两个终端一般称为接口调用方和接口提供方。该接口调用方或接口提供方可以但不仅限于客户端或服务器端或第三方。在本实施例中,接口调用方指的是客户端,接口提供方指的是服务器,但不以此为限。在进行签名验证时,接口调用方获取api接口请求参数(即应用程序接口请求参数)及当前时间戳。其中,接口调用方可获取本身的系统时间以作为当前时间戳,也可以获取当前网络时间以作为当前时间戳。

s102,根据应用程序接口请求参数及当前时间戳得到第一签名值。

接口调用方先对api接口请求参数做字典升序排列,再根据api接口请求参数的参数值和参数名生成签名原文,最后采用md5等加密算法对签名原文进行加密以得到初始签名。其中,该初始签名可以是32位字长的,且为了与后续内容进行区分,此处的初始签名可记为sign1。需要说明的是,上述得到初始签名的方法仅是示例性的,并不以此为限。进一步地,接口调用方还截取当前时间戳的后三位数值,根据该后三位数值确定目标时变量,并根据目标时变量对32位字长的初始签名的某些位置进行替换处理,以得到第一签名值。该部分的具体过程将在下一实施例中详述。

s103,根据应用程序接口请求参数、当前时间戳以及第一签名值构造目标请求。

接口调用方将当前时间戳和第一签名值加入api接口请求参数中,从而得到目标请求。需要说明的是,该目标请求包括但不仅限于http请求、https请求、tcp/ip请求及socket请求等。

s104,将目标请求发送至接口提供方,以使接口提供方根据目标请求生成第二签名值。

接口调用方将目标请求发送至接口提供方,接口提供方接收该目标请求。该接口提供方先对目标请求中的api接口请求参数做字典升序排列,再根据api接口请求参数的参数值和参数名生成签名原文,最后采用md5等加密算法对签名原文进行加密以得到初始签名。其中,该初始签名可以是32位字长的,且可记为sign2。需要说明的是,上述得到初始签名的方法仅是示例性的,并不以此为限。接口提供方得到初始签名之后,会根据目标请求中的当前时间戳对初始签名sign2进行替换处理以得到第二签名值。

s105,接收接口提供方所发送的验证结果,该验证结果由接口提供方比对第一签名值和第二签名值所得。

接口提供方生成第二签名值之后,会将该第二签名值与接口提供方所生成的第一签名值进行比对,若比对出两者一致,则说明接口调用方的请求在从接口调用方传送至接口提供方的过程中未被篡改,接口调用方的请求合法,通过验证;若比对出两者不一致,则说明接口调用方的请求在从接口调用方传送至接口提供方的过程中可能已经被篡改,接口调用方的请求不合法,不通过验证。

本发明实施例,先基于应用程序接口请求参数及当前时间戳得到第一签名值及第二签名值,再通过比对第一签名值及第二签名值以得到验证结果,提高了签名验证和数据交互的安全性。

请参考图2,是本发明第二实施例提供的签名验证方法的示意流程图,如图所示,该方法可包括以下步骤:

s201,获取应用程序接口请求参数及当前时间戳。

接口调用方获取api接口请求参数(即应用程序接口请求参数)及当前时间戳。其中,接口调用方可获取本身的系统时间以作为当前时间戳,也可以获取当前网络时间以作为当前时间戳。在本实施例中,接口调用方指的是客户端,接口提供方指的是服务器,但不以此为限。

举例来说,所获取的api接口请求参数包括a=1,m=2,c=3,所获取的当前时间戳timestamp=1486695218。

s202,根据应用程序接口请求参数生成初始签名。

接口调用方对api接口请求参数a=1,m=2,c=3作字典升序排列,得到新的api接口请求参数a=1,c=3,m=2。将该新的api接口请求参数的参数名a、c、m及参数值1、3、2进行拼接得到签名原文a1c3m2。之后,采用md5算法对签名原文a1c3m2进行加密得到32位字长的初始签名5fbc803b084ea0036d30250f93130bc3。

s203,截取当前时间戳的后三位数值以得到初始时变量,该初始时变量包括初始键名和初始键值。

接口调用方截取当前时间戳后三位数值,其中,最后一位数值标记为x,倒数第二位数值标记为y,倒数第三位数值标记为z,将该后三位数值转换成int类型的变量,并组成关联数组a,数据结构为a[0]=x、a[1]=y、a[2]=z,即所得到的初始时变量为a[0]=x、a[1]=y、a[2]=z。该初始时变量包括初始键名(如0、1、2)和初始键值(如x、y、z)。本实施例中,根据当前时间戳timestamp=1486695218可得到的初始时变量是a[0]=8、a[1]=1、a[2]=2。

s204,根据初始键值计算目标键名。

具体地,将a[0]数值作为a[0]的键名,将a[0]和a[1]相加的和作为a[1]的键名,将a[0],a[1]和a[2]相加的和作为a[2]的键名。本实施例中,重新计算得到的目标键名是8、9、11,即键名由0、1、2变更为8、9、11。

s205,根据目标键名确定目标时变量。

根据目标键名是8、9、11确定出目标时变量:a[8]=8、a[9]=1、a[11]=2。

s206,根据目标时变量对初始签名进行替换处理以得到第一签名值。

根据上面的三个目标时变量a[8]=8、a[9]=1、a[11]=2,对初始签名5fbc803b084ea0036d30250f93130bc3进行替换。那么初始签名的第8位数值b替换成8,第9位数值0替换成1,第11位数值4替换成2,得出第一签名值为5fbc8038182ea0036d30250f93130bc3。

s207,根据应用程序接口请求参数、当前时间戳及第一签名值构造目标请求。

接口调用方将当前时间戳和第一签名值加入api接口请求参数中,从而得到目标请求。需要说明的是,该目标请求包括但不仅限于http请求、https请求、tcp/ip请求及socket请求等。

s208,将目标请求发送至接口提供方,以使接口提供方根据目标请求生成第二签名值。

接口调用方将目标请求发送至接口提供方,接口提供方接收该目标请求。该接口提供方先对目标请求中的api接口请求参数做字典升序排列,再根据api接口请求参数的参数值和参数名生成签名原文,最后采用md5等加密算法对签名原文进行加密以得到初始签名。之后,接口提供方会根据目标请求中的当前时间戳对初始签名sign2进行替换处理以得到第二签名值。具体过程请参考步骤s203至s206。

s209,接收接口提供方所发送的验证结果,该验证结果由接口提供方比对第一签名值和第二签名值所得。

接口提供方生成第二签名值之后,会将该第二签名值与接口提供方所生成的第一签名值进行比对,若比对出两者一致,则说明接口调用方的请求在从接口调用方传送至接口提供方的过程中未被篡改,接口调用方的请求合法,通过验证;若比对出两者不一致,则说明接口调用方的请求在从接口调用方传送至接口提供方的过程中可能已经被篡改,接口调用方的请求不合法,不通过验证。

本发明实施例,基于应用程序接口请求参数及当前时间戳生成第一签名值及第二签名值,具体生成第一签名值及第二签名值时,对初始签名的替换位置和数值随时间戳的变化而变化,变化规律复杂,具有很强的动态性,几乎不能被暴力破解。此外,本发明实施例放弃了传统密钥签名方式,避免了因密钥泄露而导致的数据外泄风险。另外,本发明实施例在生成初始签名时,采用了md5算法,由于md5算法的通用性,使得本发明实施例的签名验证方法更能被广泛地应用;且,最终得到的第一签名值及第二签名值仍保留原有md5生成签名的数据结构,仍属于标准的md5加密签名形式,这对于接口提供方和调用方以外的第三方来说具有强烈的迷惑性。由于md5加密签名的特性,一旦签名发生变化,其映射的原数据毫无关联性。因此即使签名被传统的md5解密方式破解,得到的参数结果与本接口参数一点关联性都没有,破解的结果也毫无意义。综上,本发明实施例提高了签名验证和数据交互的安全性。

请参考图3,是本发明第三实施例提供的签名验证方法的示意流程图,如图所示,该方法可包括以下步骤:

s301,接收接口调用方所发送的目标请求。

该目标请求由接口调用方的应用程序接口请求参数、接口调用方的第一签名值及当前时间戳所得,第一签名值由应用程序接口请求参数和当前时间戳所得。

当两个终端需要进行数据交互时,通常需要先对应用程序编程接口(applicationprogramminginterface,api)进行签名验证。该两个终端一般称为接口调用方和接口提供方。该接口调用方或接口提供方可以但不仅限于客户端或服务器端或第三方。在本实施例中,接口调用方指的是客户端,接口提供方指的是服务器,但不以此为限。

接口调用方先获取程序接口请求参数及当前时间戳,再根据应用程序接口请求参数及当前时间戳得到第一签名值,之后根据应用程序接口请求参数、当前时间戳以及第一签名值构造目标请求,最后将将目标请求发送至接口提供方。接口提供方接收该目标请求。需要说明的是,接口调用方构造目标请求的具体过程请参考本发明第一实施例中的步骤s101至s103。

s302,根据目标请求中的应用程序接口请求参数和当前时间戳得到第二签名值。

接口提供方先对目标请求中的api接口请求参数做字典升序排列,再根据api接口请求参数的参数值和参数名生成签名原文,最后采用md5等加密算法对签名原文进行加密以得到初始签名。其中,该初始签名可以是32位字长的。需要说明的是,上述得到初始签名的方法仅是示例性的,并不以此为限。接口提供方得到初始签名之后,会根据目标请求中的当前时间戳对初始签名进行替换处理以得到第二签名值。

s303,比对第一签名值及第二签名值以得到验证结果。

接口提供方生成第二签名值之后,会将该第二签名值与接口提供方所生成的第一签名值进行比对,若比对出两者一致,则说明接口调用方的请求在从接口调用方传送至接口提供方的过程中未被篡改,接口调用方的请求合法,通过验证;若比对出两者不一致,则说明接口调用方的请求在从接口调用方传送至接口提供方的过程中可能已经被篡改,接口调用方的请求不合法,不通过验证。

本发明实施例,先基于应用程序接口请求参数及当前时间戳得到第一签名值及第二签名值,再通过比对第一签名值及第二签名值以得到验证结果,提高了签名验证和数据交互的安全性。

请参考图4,是本发明第四实施例提供的签名验证方法的示意流程图,如图所示,该方法可包括以下步骤:

s401,接收接口调用方所发送的目标请求。

该目标请求由接口调用方的应用程序接口请求参数、接口调用方的第一签名值及当前时间戳所得,第一签名值由应用程序接口请求参数和当前时间戳所得。

接口调用方先获取程序接口请求参数及当前时间戳,再根据应用程序接口请求参数及当前时间戳得到第一签名值,之后根据应用程序接口请求参数、当前时间戳以及第一签名值构造目标请求,最后将将目标请求发送至接口提供方。接口提供方接收该目标请求。需要说明的是,接口调用方构造目标请求的具体过程请参考本发明第一实施例中的步骤s101至s103。

s402,根据应用程序接口请求参数生成初始签名。

若目标请求中包括的api接口请求参数为a=1,m=2,c=3。接口提供方对api接口请求参数a=1,m=2,c=3作字典升序排列,得到新的api接口请求参数a=1,c=3,m=2。将该新的api接口请求参数的参数名a、c、m及参数值1、3、2进行拼接得到签名原文a1c3m2。之后,采用md5算法对签名原文a1c3m2进行加密得到32位字长的初始签名5fbc803b084ea0036d30250f93130bc3。

s403,截取当前时间戳的后三位数值以得到初始时变量,该初始时变量包括初始键名和初始键值。

接口提供方截取当前时间戳后三位数值,其中,最后一位数值标记为x,倒数第二位数值标记为y,倒数第三位数值标记为z,将该后三位数值转换成int类型的变量,并组成关联数组a,数据结构为a[0]=x、a[1]=y、a[2]=z,即所得到的初始时变量为a[0]=x、a[1]=y、a[2]=z。该初始时变量包括初始键名(如0、1、2)和初始键值(如x、y、z)。若目标请求中包括的当前时间戳为timestamp=1486695218可得到的初始时变量是a[0]=8、a[1]=1、a[2]=2。

s404,根据初始键值计算目标键名。

具体地,将a[0]数值作为a[0]的键名,将a[0]和a[1]相加的和作为a[1]的键名,将a[0],a[1]和a[2]相加的和作为a[2]的键名。本实施例中,重新计算得到的目标键名是8、9、11,即键名由0、1、2变更为8、9、11。

s405,根据目标键名确定目标时变量。

根据目标键名是8、9、11确定出目标时变量:a[8]=8、a[9]=1、a[11]=2。

s406,根据目标时变量对初始签名进行替换处理以得到第二签名值。

根据上面的三个目标时变量a[8]=8、a[9]=1、a[11]=2,对初始签名5fbc803b084ea0036d30250f93130bc3进行替换。那么初始签名的第8位数值b替换成8,第9位数值0替换成1,第11位数值4替换成2,得出第二签名值为5fbc8038182ea0036d30250f93130bc3。

s407,比对第一签名值及第二签名值以得到验证结果。

接口提供方生成第二签名值之后,会将该第二签名值与接口提供方所生成的第一签名值进行比对,若比对出两者一致,则说明接口调用方的请求在从接口调用方传送至接口提供方的过程中未被篡改,接口调用方的请求合法,通过验证;若比对出两者不一致,则说明接口调用方的请求在从接口调用方传送至接口提供方的过程中可能已经被篡改,接口调用方的请求不合法,不通过验证。

本发明实施例,基于应用程序接口请求参数及当前时间戳生成第一签名值及第二签名值,具体生成第一签名值及第二签名值时,对初始签名的替换位置和数值随时间戳的变化而变化,变化规律复杂,具有很强的动态性,几乎不能被暴力破解。此外,本发明实施例放弃了传统密钥签名方式,避免了因密钥泄露而导致的数据外泄风险。另外,本发明实施例在生成初始签名时,采用了md5算法,由于md5算法的通用性,使得本发明实施例的签名验证方法更能被广泛地应用;且,最终得到的第一签名值及第二签名值仍保留原有md5生成签名的数据结构,仍属于标准的md5加密签名形式,这对于接口提供方和调用方以外的第三方来说具有强烈的迷惑性。由于md5加密签名的特性,一旦签名发生变化,其映射的原数据毫无关联性。因此即使签名被传统的md5解密方式破解,得到的参数结果与本接口参数一点关联性都没有,破解的结果也毫无意义。综上,本发明实施例提高了签名验证和数据交互的安全性。

请参考图5,是本发明第五实施例提供的签名验证方法的示意流程图,如图所示,该方法可包括以下步骤:

s501,接口调用方获取应用程序接口请求参数及当前时间戳。

s502,接口调用方根据应用程序接口请求参数生成初始签名。

s503,接口调用方截取当前时间戳的后三位数值以得到初始时变量。

s504,接口调用方根据初始时变量确定目标时变量。

s505,接口调用方根据目标时变量对初始签名进行替换处理以得到第一签名值。

s506,接口调用方根据应用程序接口请求参数、当前时间戳及第一签名值构造目标请求。

s507,接口调用方将目标请求发送至接口提供方。

s508,接口提供方接收接口调用方所发送的目标请求。

s509,接口提供方根据目标请求中的应用程序接口请求参数和当前时间戳得到第二签名值。

s510,接口提供方比对第一签名值及第二签名值以得到验证结果。

需要说明的是,步骤s501至s508的具体过程请参考第二实施例中的步骤s201至s208,步骤s509至s511的具体过程请参考步骤s401至s407。

本发明实施例,基于应用程序接口请求参数及当前时间戳生成第一签名值及第二签名值,具体生成第一签名值及第二签名值时,对初始签名的替换位置和数值随时间戳的变化而变化,变化规律复杂,具有很强的动态性,几乎不能被暴力破解。此外,本发明实施例放弃了传统密钥签名方式,避免了因密钥泄露而导致的数据外泄风险。另外,本发明实施例在生成初始签名时,采用了md5算法,由于md5算法的通用性,使得本发明实施例的签名验证方法更能被广泛地应用;且,最终得到的第一签名值及第二签名值仍保留原有md5生成签名的数据结构,仍属于标准的md5加密签名形式,这对于接口提供方和调用方以外的第三方来说具有强烈的迷惑性。由于md5加密签名的特性,一旦签名发生变化,其映射的原数据毫无关联性。因此即使签名被传统的md5解密方式破解,得到的参数结果与本接口参数一点关联性都没有,破解的结果也毫无意义。综上,本发明实施例提高了签名验证和数据交互的安全性。

请参考图6,是本发明第一实施例提供的签名验证终端的示意结构图,如图所示,该终端可以包括:

获取单元10,用于获取应用程序接口请求参数及当前时间戳;

处理单元11,用于根据应用程序接口请求参数及当前时间戳得到第一签名值;

构造单元12,用于根据应用程序接口请求参数、当前时间戳及第一签名值构造目标请求;

发送单元13,用于将目标请求发送至接口提供方,以使接口提供方根据目标请求生成第二签名值;

接收单元14,用于接收接口提供方所发送的验证结果,验证结果由接口提供方比对第一签名值和第二签名值所得。

作为一种可选的实施方式,处理单元11具体用于:

根据应用程序接口请求参数生成初始签名;

根据当前时间戳确定目标时变量;

根据目标时变量对初始签名进行替换处理以得到第一签名值。

作为一种可选的实施方式,处理单元11具体用于:

截取当前时间戳的后三位数值以得到初始时变量,初始时变量包括初始键名和初始键值;

根据初始键值计算目标键名;

根据目标键名确定目标时变量。

本发明实施例,基于应用程序接口请求参数及当前时间戳生成第一签名值及第二签名值,具体生成第一签名值及第二签名值时,对初始签名的替换位置和数值随时间戳的变化而变化,变化规律复杂,具有很强的动态性,几乎不能被暴力破解。此外,本发明实施例放弃了传统密钥签名方式,避免了因密钥泄露而导致的数据外泄风险。另外,本发明实施例在生成初始签名时,采用了md5算法,由于md5算法的通用性,使得本发明实施例的签名验证方法更能被广泛地应用;且,最终得到的第一签名值及第二签名值仍保留原有md5生成签名的数据结构,仍属于标准的md5加密签名形式,这对于接口提供方和调用方以外的第三方来说具有强烈的迷惑性。由于md5加密签名的特性,一旦签名发生变化,其映射的原数据毫无关联性。因此即使签名被传统的md5解密方式破解,得到的参数结果与本接口参数一点关联性都没有,破解的结果也毫无意义。综上,本发明实施例提高了签名验证和数据交互的安全性。

请参考图7,是本发明第二实施例提供的签名验证终端的示意结构图,如图所示,该终端可以包括:

接收单元20,用于接收接口调用方所发送的目标请求,该目标请求中的请求参数由接口调用方的应用程序接口请求参数、接口调用方的第一签名值及当前时间戳所得,该第一签名值由应用程序接口请求参数和当前时间戳所得;

处理单元21,用于根据目标请求中的应用程序接口请求参数和当前时间戳得到第二签名值;

比对单元22,用于比对第一签名值及第二签名值以得到验证结果。

作为一种可选的实施方式,处理单元21具体用于:

根据应用程序接口请求参数生成初始签名;

根据当前时间戳确定目标时变量;

根据目标时变量对初始签名进行替换处理以得到第二签名值。

作为一种可选的实施方式,处理单元21具体用于:

截取当前时间戳的后三位数值以得到初始时变量,初始时变量包括初始键名和初始键值;

根据初始键值计算目标键名;

根据目标键名值确定目标时变量。

本发明实施例,基于应用程序接口请求参数及当前时间戳生成第一签名值及第二签名值,具体生成第一签名值及第二签名值时,对初始签名的替换位置和数值随时间戳的变化而变化,变化规律复杂,具有很强的动态性,几乎不能被暴力破解。此外,本发明实施例放弃了传统密钥签名方式,避免了因密钥泄露而导致的数据外泄风险。另外,本发明实施例在生成初始签名时,采用了md5算法,由于md5算法的通用性,使得本发明实施例的签名验证方法更能被广泛地应用;且,最终得到的第一签名值及第二签名值仍保留原有md5生成签名的数据结构,仍属于标准的md5加密签名形式,这对于接口提供方和调用方以外的第三方来说具有强烈的迷惑性。由于md5加密签名的特性,一旦签名发生变化,其映射的原数据毫无关联性。因此即使签名被传统的md5解密方式破解,得到的参数结果与本接口参数一点关联性都没有,破解的结果也毫无意义。综上,本发明实施例提高了签名验证和数据交互的安全性。

需要说明的是,本发明实施例终端的具体工作流程已在前述的方法部分做了详述,在此不再赘述。

参考图8,是本发明第三实施例提供的一种终端的结构示意图。如图所示,该终端包括:至少一个处理器301,例如cpu,至少一个用户接口303,存储器304,至少一个通信总线302。其中,通信总线302用于实现这些组件之间的连接通信。其中,用户接口303可以包括显示屏(display)、键盘(keyboard),可选用户接口303还可以包括标准的有线接口、无线接口。存储器304可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器304可选的还可以是至少一个位于远离前述处理器301的存储装置。其中处理器301可以结合图6至7所描述的终端,存储器304中存储一组程序代码,且处理器301调用存储器304中存储的程序代码,用于执行以下操作:

获取应用程序接口请求参数及当前时间戳;

根据应用程序接口请求参数及当前时间戳得到第一签名值;

根据应用程序接口请求参数、当前时间戳及第一签名值构造目标请求;

将目标请求发送至接口提供方,以使接口提供方根据目标请求生成第二签名值;

接收接口提供方所发送的验证结果,该验证结果由接口提供方比对第一签名值和第二签名值所得。

作为一种可选的实施方式,处理器301调用存储器304中存储的程序代码,用于执行以下操作:

根据应用程序接口请求参数生成初始签名;

根据当前时间戳确定目标时变量;

根据目标时变量对初始签名进行替换处理以得到第一签名值。

作为一种可选的实施方式,处理器301调用存储器304中存储的程序代码,用于执行以下操作:

截取当前时间戳的后三位数值以得到初始时变量,初始时变量包括初始键名和初始键值;

根据初始键值计算目标键名;

根据目标键名值确定目标时变量。

作为一种可选的实施方式,处理器301调用存储器304中存储的程序代码,用于执行以下操作:

接收接口调用方所发送的目标请求,该目标请求中的请求参数由接口调用方的应用程序接口请求参数、接口调用方的第一签名值及当前时间戳所得,该第一签名值由应用程序接口请求参数和当前时间戳所得;

根据目标请求中的应用程序接口请求参数和当前时间戳得到第二签名值;

比对第一签名值及第二签名值以得到验证结果。

作为一种可选的实施方式,处理器301调用存储器304中存储的程序代码,用于执行以下操作:

根据应用程序接口请求参数生成初始签名;

根据当前时间戳确定目标时变量;

根据目标时变量对初始签名进行替换处理以得到第二签名值。

本发明实施例,先基于应用程序接口请求参数及当前时间戳得到第一签名值及第二签名值,再通过比对第一签名值及第二签名值以得到验证结果,提高了签名验证和数据交互的安全性。

请参考图9,是本发明第一实施例提供的签名验证系统的示意结构图,如图所示,该系统可以包括第一终端100及第二终端200。其中,第一终端100的具体结构及其功能请参考如图6所述的终端,第二终端200的具体结构及功能请参考如图7所述的终端。

本发明实施例,先基于应用程序接口请求参数及当前时间戳得到第一签名值及第二签名值,再通过比对第一签名值及第二签名值以得到验证结果,提高了签名验证和数据交互的安全性。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

此外,在本申请所提供的几个实施例中,应该理解到,所揭露的方法、终端和系统,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。

本发明实施例终端中的单元可以根据实际需要进行合并、划分和删减。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1