CN108512666A - Api请求的加密方法、数据交互方法及系统 - Google Patents

Api请求的加密方法、数据交互方法及系统 Download PDF

Info

Publication number
CN108512666A
CN108512666A CN201810308568.8A CN201810308568A CN108512666A CN 108512666 A CN108512666 A CN 108512666A CN 201810308568 A CN201810308568 A CN 201810308568A CN 108512666 A CN108512666 A CN 108512666A
Authority
CN
China
Prior art keywords
parameter
client
open platform
request
platform server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810308568.8A
Other languages
English (en)
Inventor
沈振家
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Rhino Network Technology Co Ltd
Original Assignee
Suzhou Rhino Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Rhino Network Technology Co Ltd filed Critical Suzhou Rhino Network Technology Co Ltd
Priority to CN201810308568.8A priority Critical patent/CN108512666A/zh
Publication of CN108512666A publication Critical patent/CN108512666A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种API请求的加密方法、数据交互方法及系统,涉及通信领域,以缓解现有的业务级数据加密方式存在安全系数较低的问题,保障业务级数据的安全性,提高安全系数。该加密方法应用于客户端和服务器端,包括排序步骤:对API请求中的筛选参数,根据参数名称的ASCII码表的顺序排序;筛选参数为排除参数名称为sign、byte[]外的请求参数;拼接步骤:将排序好的参数名称和参数名称对应的参数值按顺序依次拼装,生成字符串;编码步骤:将拼接好的字符串进行编码生成字节流;加密步骤:使用签名算法对编码后的字节流进行摘要得到字节流结果;签名算法包括MD5算法或HMAC_MD5算法;字节流结果采用十六进制表示。

Description

API请求的加密方法、数据交互方法及系统
技术领域
本发明涉及通信技术领域,尤其是涉及一种API请求的加密方法、数据交互方法及系统。
背景技术
目前,传统的业务级数据加密方式为可逆加密,在数据被截获后容易被破译并造成系统接口遭到攻击。
综上,现有的业务级数据加密方式存在安全系数较低的问题。
发明内容
有鉴于此,本发明的目的在于提供一种API请求的加密方法、数据交互方法及系统,以缓解现有的业务级数据加密方式存在安全系数较低的问题。能够提高安全系数。
第一方面,本发明实施例提供了一种API请求的加密方法,包括:
应用于客户端和服务器端,包括:
排序步骤:对API请求中的筛选参数,根据参数名称的ASCII码表的顺序排序;所述筛选参数为排除参数名称为sign的参数以及参数名称为byte[]的参数外的请求参数;
拼接步骤:将排序好的参数名称和参数名称对应的参数值按排序的顺序依次拼装,生成字符串;
编码步骤:将拼接好的字符串进行编码,生成字节流;
加密步骤:使用签名算法对编码后的字节流进行摘要,得到字节流结果;所述签名算法包括MD5算法或HMAC_MD5算法;所述字节流结果采用十六进制表示。
第二方面,本发明实施例提供了一种数据交互方法,包括:
客户端获取事件指令转换为API请求;所述API请求用于发起开放平台服务器的调用请求,所述API请求包括公共参数和业务参数;
客户端利用如第一方面所述的API请求的加密方法对所述API请求进行加密,生成第一字节流结果;
基于所述API请求和所述第一字节流结果,客户端构造并发起网络请求;
客户端判定网络请求是否到达开放平台服务器;
若是,则开放平台服务器对所述网络请求进行处理。
结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述开放平台服务器对所述网络请求进行处理,具体包括:
开放平台服务器判定所述网络请求是否合法;
当判定所述网络请求合法,则开放平台服务器解析客户端发送的网络请求的字符串参数,还原得到所述API请求。
结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述开放平台服务器判定所述网络请求是否合法,具体包括:
开放平台服务器利用如第一方面所述的API请求的加密方法对获取到所述网络请求进行加密,得到第二字节流结果;
将所述第二字节流结果与客户端生成的第一字节流结果进行比较,判断两者是否一致;
若一致,则判定所述网络请求合法。
结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第三种可能的实施方式,其中,所述开放平台服务器解析客户端发送的网络请求的字符串参数,还原得到所述API请求,具体包括:
开放平台服务器使用Json.toJavaObject方法,将网络请求字符串中的业务参数进行反序列化还原得到所述API请求。
结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第四种可能的实施方式,其中,所述开放平台服务器对所述网络请求进行处理,还包括:
开放平台服务器匹配与所述API请求相对应的应用服务器的接口;
开放平台服务器调用与所述API请求相对应的应用服务器的接口请求。
结合第二方面的第四种可能的实施方式,本发明实施例提供了第二方面的第五种可能的实施方式,其中,该数据交互方法还包括:
应用服务器响应所述接口请求;
应用服务器判断所述接口请求是否合法;
当判断所述接口请求合法,则应用服务器执行业务逻辑,生成执行结果;
应用服务器反馈响应结果至开放平台服务器;所述响应结果包括校验结果和执行结果。
结合第二方面的第五种可能的实施方式,本发明实施例提供了第二方面的第六种可能的实施方式,其中,该数据交互方法还包括:
开放平台服务器将应用服务器反馈的响应结果反馈至客户端,以使所述客户端根据所述响应结果进行处理。
第三方面,本发明实施例还提供一种数据交互系统,包括:
系统数据库层和系统应用层,
所述系统数据库层包括只写数据库、只读数据库、分布式缓存;
所述系统应用层包括:CDN内容分发网络模块、负载均衡模块、服务注册中心模块、应用服务器模块;
所述系统应用层的应用服务器模块采用分布式架构;每个应用服务器处理一个服务业务,每个应用服务器均接入所述系统数据库层的分布式缓存;
所述CDN内容分发网络模块包括多种客户端,所述客户端包括移动客户端和桌面客户端,所述客户端具有与所述系统相对应的SDK工具包;所述SDK工具包与所述开放API接口无缝对接;
所述负载均衡模块包括开放平台服务器,所述开放平台服务器用于对外提供开放API接口;
所述服务注册中心模块采用zookeeper集群,所述zookeeper集群作为分布式架构的应用服务器模块的注册中心。
结合第三方面,本发明实施例提供了第三方面的第一种可能的实施方式,其中,所述数据交互系统还接入分布式存储;所述数据交互系统接入日志平台。
第四方面,本发明实施例还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的数据交互方法的步骤。
第五方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述的数据交互方法的步骤。
本发明实施例带来了以下有益效果:
本发明实施例提供的API请求的加密方法,应用于客户端和服务器端,包括,排序步骤:对API请求中的筛选参数,根据参数名称的ASCII码表的顺序排序;所述筛选参数为排除参数名称为sign的参数以及参数名称为byte[]的参数外的请求参数;拼接步骤:将排序好的参数名称和参数名称对应的参数值按排序的顺序依次拼装,生成字符串;编码步骤:将拼接好的字符串采用UTF-8编码,生成字节流;加密步骤:使用签名算法对编码后的字节流进行摘要,得到字节流结果;所述签名算法包括MD5算法或HMAC_MD5算法;所述字节流结果采用十六进制表示。因此,本发明实施例提供的技术方案采用的加密方式为不可逆加密,通过服务器端和客户端各自存放的公钥进行各自加密,能够缓解现有的业务级数据加密方式存在安全系数较低的问题,保障业务级数据的安全性,提高安全系数。
本发明实施例提供的数据交互方法中,通过服务器端和客户端各自存放的公钥进行各自加密,并由服务器端进行验证等处理,匹配网络请求的合法性,保障公钥不会泄漏,从而进一步保障业务级数据的安全性。
本发明实施例提供的数据交互系统中,通过放大后端服务器的计算能力,有效扩充前端开放API接口的访问容量,并且动态为每类终端建立独立的开发工具包的方式,有效的降低了终端接入数据平台的开发工作量,在后续有更多的终端接入时,只需要为其提供工具包,即可无缝对接,既保障了接入的数据安全,统一了数据标准,也增强了接入的稳定性。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的API请求的加密方法的流程图;
图2为本发明实施例提供的一种数据交互方法的基本流程图;
图3为本发明实施例提供一种数据交互方法的详细流程图;
图4为现有技术中的数据交互系统的示意图;
图5为本发明实施例提供的数据交互系统的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前现有的高配置的智能手机成本昂贵,且存在运算能力和存储能力有限,不能满足用户日益增长的高速、稳定运行需求,导致用户体验度变差的问题。基于此,本发明实施例提供的一种交互方法、交互装置、电子设备及交互系统,以缓解现有的高配置的智能手机成本昂贵,且存在运算能力和存储能力有限,不能满足用户日益增长的高速、稳定运行需求,导致用户体验度变差的技术问题,能够改善用户体验度。
实施例一:
如图1所示,本发明实施例提供了一种API请求的加密方法,由电子设备(例如客户端或服务器)执行,该方法可以包括以下步骤:
排序步骤S101:对API请求中的筛选参数,根据参数名称的ASCII码表的顺序排序。
其中,上述筛选参数为排除参数名称为sign的参数以及参数名称为byte[]的参数外的请求参数。
具体的,客户端和服务器各自在进行加密的时候,根据参数名称的ASCII码表的顺序对API请求中的筛选参数排序。
例如:foo=1,bar=2,foo_bar=3,foobar=4排序后的顺序是bar=2,foo=1,foo_bar=3,foobar=4。
拼接步骤S102:将排序好的参数名称和参数名称对应的参数值按排序的顺序依次拼装,生成字符串。
具体的,客户端和服务器将排序好的参数名和参数值按顺序依次进行拼装,根据上面的示例得到的结果为:bar2foo1foo_bar3foobar4,即生成的字符串为bar2foo1foo_bar3foobar4。
编码步骤S103:将拼接好的字符串进行编码,生成字节流。
具体的,在一个实施例中,客户端和服务器将拼接好的字符串采用UTF-8编码,生成字节流。
需要说明的是,上述的UTF-8编码可以通过屏蔽位和移位操作快速读写。字符串比较时strcmp()和wcscmp()的返回结果相同,因此使排序变得更加容易。字节FF和FE在UTF-8编码中永远不会出现,因此他们可以用来表明UTF-16或UTF-32文本(见BOM)UTF-8是字节顺序无关的。它的字节顺序在所有系统中都是一样的,因此它实际上并不需要BOM。
加密步骤S104:使用签名算法对编码后的字节流进行摘要,得到字节流结果。
具体的,客户端或服务器使用相关签名算法对编码后的字节流进行摘要,生成字节流结果。
其中,上述签名算法包括MD5算法或HMAC_MD5算法;上述字节流结果采用十六进制表示。
在一个实施例中,客户端或服务器使用MD5算法或HMAC_MD5算法对编码后的字节流进行摘要,得到字节流结果。
如果使用MD5算法,则需要在拼装的字符串前后加上app的secret后,再进行摘要;还以上面的示例为例进行说明,这时进行摘要后得到的字节流结果为:md5(secret+bar2foo1foo_bar3foobar4+secret)。
如果使用HMAC_MD5算法,则需要用app的secret初始化摘要算法后,再进行摘要。同样以上面的示例,此时进行初始化摘要算法处理后摘要得到的字节流结果为:hmac_md5(bar2foo1foo_bar3foobar4)。
进一步的,对于客户端,客户端还可以将生成的字节流结果放入API请求参数列表中,构造得到网络请求。
进一步的,在上述排序步骤S101之前,还包括:
筛选步骤:获取API请求中的请求参数,对上述请求参数进行参数筛选,得到筛选参数;上述请求参数包括业务参数和公共参数。
具体的,对API请求中的请求参数进行参数筛选或者过滤,排除参数名称为sign的参数以及参数名称为byte[]的两类参数,得到筛选参数,对筛选参数执行步骤S101步骤。
需要说明的是,MD5是128位长度的摘要算法,用16进制表示,一个十六进制的字符能表示4个位,所以签名后的字符串长度固定为32个十六进制字符。所有的请求和响应数据编码皆为utf-8格式,URL里的所有参数名和参数值请做URL编码。
此外,如果请求的Content-Type是application/x-www-form-urlencoded,则HTTPBody体里的所有参数值也做URL编码;如果是multipart/form-data格式,每个表单字段的参数值无需编码,但每个表单字段的charset部分需要指定为utf-8。参数名与参数值拼装起来的URL长度小于1024个字符时,可以用GET发起请求;参数类型含byte[]类型或拼装好的请求URL过长时,必须用POST发起请求。所有API都可以用POST发起请求。
实施例二:
如图2和图3所示,本发明实施例提供了一种数据交互方法,该数据交互方法可应用于多端数据同步,即该数据交互方法能够实现多客户端的数据同步。
具体的,该数据交互方法包括:
步骤S201:客户端获取事件指令转换为API请求。
其中,上述事件指令包括人为触发的事件指令和/或客户端的硬件设备自动触发的事件指令;上述API调用请求用于发起开放平台的调用请求,上述API请求包括公共参数和业务参数。
具体的,客户端所在的硬件系统中会由自动触发或人为操作的方式产生系统事件。通过硬件系统事件的触发,发出相应事件指令供客户端接收。
其中,【人为操作】例如:用户通过输入设备(例如键盘、手机终端的按键)向硬件系统发出了输入指令。
【自动触发】例如:在进行人脸识别摄像采集时,由硬件设备(摄像头)捕捉到人脸信息,拍照后将照片转换为图片流。
客户端在接收到系统指令后,将通过针对系统语言所开发的SDK进行封装调用,转换为开放平台服务器定义的API请求(包括公共参数和业务参数),用于发起开放平台的调用请求。
继续以上述人脸识别的例子,客户端将硬件设备采集到的图片,通过SDK封装为图片流的API请求。
步骤S202:客户端利用API请求的加密方法对上述API请求进行加密,生成第一字节流结果。
具体的,客户端利用实施例一提及的API请求的加密方法,对上述SDK封装的API请求进行加密,生成第一字节流结果。
在本实施例中,该步骤S202具体包括:
排序步骤:对API请求中的筛选参数,根据参数名称的ASCII码表的顺序排序;上述参数为排除参数名称为sign的参数以及参数名称为byte[]的参数外的所有公共参数和业务参数;
拼接步骤:将排序好的参数名称和参数名称对应的参数值按排序的顺序依次拼装,生成字符串。
编码步骤:将拼接好的字符串采用UTF-8编码,生成字节流;
加密步骤:使用签名算法对编码后的字节流进行摘要,得到字节流结果;上述签名算法包括MD5算法或HMAC_MD5算法;上述字节流结果采用十六进制表示。这里得到的字节流结果为第一字节流结果。
步骤S203:基于上述API请求和上述第一字节流结果,客户端构造并发起网络请求。
具体的,客户端将生成的字节流结果放入API请求的参数列表中,构造得到网络请求。
在本实施例中,该步骤S203通过以下步骤实现:
构造步骤:基于上述API请求和上述第一字节流结果构造得到网络请求。
其中,上述网络请求为http请求;上述网络请求包括API请求和第一字节流结果;换句话说,上述网络请求是加密后的API请求。构造方式可以是拼接的方式。
发起步骤:向开放平台服务器发起网络请求。
具体的,客户端构造http请求,上述http请求的请求地址为开放平台服务器公布的接口调用地址,上述http请求的请求参数为API请求中的所有参数,客户端通过http协议或https协议请求开放平台服务器的80端口或443端口,即客户端通过http协议向开放平台服务器的80端口发起请求或通过https协议或向开放平台服务器的443端口发起请求。相比于传统硬件与服务端的通信方式基于socket端口的运维调试成本过高,且安全性难以保障,本发明利用标准的http方式进行网络间通信,可以有效利用http的80端口或https的443端口进行安全认证,http请求方式也不影响数据传递的效率。
步骤S204:客户端判定网络请求是否到达开放平台服务器。
具体的,客户端通过判断是否收到开放平台服务器的响应头来判断是否到达开放平台服务器。
需要指出的是,本申请中出现的开放平台或开放平台(Open API)均是指开放平台服务器,且本申请中出现的SDK是SDK工具包的缩写。
若是,即网络请求到达开放平台服务器,则执行步骤S205。
步骤S205:开放平台服务器对上述网络请求进行处理。
这里的处理包括匹配验证的步骤,即验证网络请求的合法性,保障业务数据安全。
若否,则可以返回步骤S203重试。
具体的,在本实施例中,若否,即网络请求未到达开放平台服务器,客户端可以执行上述构造步骤和发起步骤两个子步骤,即客户端重新构造并发起网络请求。
需要说明的是,在其他实施例中,客户端也可以仅执行上述发起步骤,即客户端直接向开放平台服务器重新发起网络请求。
在本实施例中,如图3所示,该步骤S205具体包括以下步骤:
步骤S2051:开放平台服务器判定上述网络请求是否合法。
在具体实施时,该步骤S2051主要包括:
A开放平台服务器利用API请求的加密方法对获取到上述网络请求,进行加密,得到第二字节流结果。
具体的,开放平台服务器利用实施例一提及的API请求的加密方法对网络请求中的API请求部分进行排序、拼接、编码、加密,得到第二字节流结果。
B将上述第二字节流结果与客户端生成的第一字节流结果进行比较,判断两者是否一致。
若一致,则判定上述网络请求合法。
若不一致,则判定上述网络请求不合法。
当判定上述网络请求合法,则执行步骤S2052;当判定上述网络请求不合法,则执行步骤S2055。
步骤S2055:开放平台服务器反馈错误至客户端。
步骤S2052:开放平台服务器解析客户端发送的网络请求的字符串参数,还原得到上述API请求。
在一个实施例中,该步骤通过以下方式实现:
开放平台服务器使用Json.toJavaObject方法,将网络请求字符串中的业务参数进行反序列化还原得到API请求。
具体的,开放平台服务器可以使用第三方工具中提供的Json.toJavaObject方法,将网络请求字符串中的业务参数进行反序列化还原得到API请求。
这是由于开放平台服务器在判定网络请求的合法性时对API参数进行了加密生成了第二字节流结果,也就是说,API请求中的业务参数经过了序列化,因此,这里需要对业务参数进行反序列化还原出原始(即客户端通过SDK封装得到)的API请求,以供开放平台服务器后续逻辑识别和使用。
步骤S2053:开放平台服务器匹配与上述API请求相对应的应用服务器的接口。
具体的,开放平台服务器根据API请求公共参数中的method_name字段,进行数据库匹配。
具体匹配方式如下:
select method_name,method_url,service_name from api_method wheremethod_name=${method_name}
例:客户端在发起人脸识别的请求时,会在公共参数中传递method_name:api.member.pic.find方法,在此处开放平台服务器进行路由匹配时,根据数据库中的数据寻找到后端相应的应用服务器接口为:memberService.findMemberByPic,将该接口信息传递至下一步骤进行处理。
在本实施例中,上述的数据库为MySQL数据库,数据库中包括有数据表,所述数据表用于储存method_name对应的接口信息。
步骤S2054:开放平台服务器调用与上述API请求相对应的应用服务器的接口请求。
具体的,开放平台服务器组装并序列化业务参数,通过dubbo的分布式路由机制,向相对应的应用服务器发出接口请求,以调用相应应用服务器的业务方法(业务的实现方法)。具体是指,假如用户调用了登录接口,这里的业务方法就是指,判断用户的帐号是否存在,密码是否正确,验证通过后在系统内添加用户的登录记录,这一串的逻辑,统称业务方法。
进一步的,上述接口请求为http请求,该接口请求包括序列化的业务参数。
进一步的,该数据交互方法还包括:
步骤S206:应用服务器响应上述接口请求。
具体的,应用服务器根据接口调用方的接口请求(TCP请求),进行相关业务逻辑的处理。这里的业务逻辑包括数据库查询、插入、更新、删除等,以实现数据同步。
步骤S207:应用服务器判断上述接口请求是否合法。
具体的,应用服务器判断上述接口请求的请求参数是否合法。
在具体实现时,该步骤S207主要包括以下步骤:
A应用服务器对接收到接口请求的请求参数进行反序列化,还原得到业务参数。
B应用服务器对业务参数的业务属性进行校验。
具体的,应用服务器根据业务方法的校验规则(例如:不允许为空,参数长度的校验等),进行业务参数的业务属性进行校验,生成校验结果。
例如人脸识别时,会对输入的图片流进行校验,如果图片流为空,则直接返回错误信息,如图片流不存在的信息。
当校验结果正确满足校验规则,则判断上述请求合法;当校验结果不满足校验规则,则判断上述请求不合法。
当判断上述接口请求合法,则执行步骤S208;当判断上述请求不合法,则执行步骤209。
步骤S208:应用服务器执行业务逻辑,生成执行结果。
具体的,应用服务器执行业务逻辑并获取业务数据。这里的业务数据就是指业务方法的返回结果。
应用服务器按照编写的代码进行业务逻辑(例如数据库查询/插入/更新/删除)的执行,并将执行得到的执行结果返回至开放平台服务器。
例:在人脸识别时,应用服务器根据输入的图片流中的特征值匹配数据库中已存在的数据,如果匹配到合适的结果,将匹配到的结果信息进行返回,如果未能匹配到结果,则返回空对象。
本实施例所提及的数据库均是指整个架构最底层的数据库(参见图5)。
步骤S209:应用服务器反馈响应结果至开放平台服务器。
其中,上述响应结果包括校验结果和执行结果。
具体的,在接口请求合法的情况下,且应用服务器在完成业务逻辑后,将校验结果、执行结果进行反馈,并进行日志记录。
在接口请求不合法的情况下,即校验结果为不满足,应用服务器反馈错误结果(校验结果)至开放平台服务器,即该情况下的响应结果只包括校验结果不需要包括执行结果。
步骤S210:开放平台服务器将应用服务器反馈的响应结果反馈至客户端,以使上述客户端根据上述响应结果进行处理。
开放平台将应用服务器返回的结果反馈给客户端,客户端根据获取到的结果和事件指令的触发方式进行相应的动作。
具体的,如果是人为操作执行事件指令结果,则客户端根据结果的对错,在交互界面显示;如果是自动触发执行事件指令结果,则记录客户端日志,如果是错误,则发送警告到系统负责人,如果是轮询显示,则在交互界面更新需要显示的结果。然后客户端的硬件系统执行指令完毕/显示结果。具体的,根据上述客户端的相关指令进行显示或读写操作。
实施例四:
如图4所示,现有技术中的数据交互系统包括dubbo服务器集群、tomcat集群、注册中心集群和redis集群,其中,dubbo服务器集群、tomcat集群均可以动态扩充,注册中心集群提供服务之间的注册和消费关系,redis集群提供相对于传统数据库更高访问性能的数据缓存。用户访问站点时,通过反向代理到达相应的服务器集群,由其中一台服务器做出响应并回传信息到用户的终端PC。现有技术中的数据交互系统虽然可以解决高并发下的服务器计算能力,但是在当前的商业模式中,各路终端已经不再限于PC、手机等智能终端,在对于其他各种终端的数据交互上,这样的技术方案并未能够进行有效的支持。
针对上述数据交互系统产生的问题,本发明实施例提供了一种数据交互系统,如图5所示,该数据交互系统包括:系统数据库层和系统应用层。
其中,上述系统数据库层包括只写数据库、只读数据库、分布式缓存。
上述系统应用层包括:CDN内容分发网络模块、负载均衡模块、服务注册中心模块、应用服务器模块。
具体的,上述系统数据库层使用了读写分离,并采用分库分表,保障在数据量日益增大后,通过将数据源进行分离,降低读写时间。
上述系统应用层的应用服务器模块采用分布式架构(SOA),有效的解除了应用服务之间会由于业务逻辑的耦合关系而产生的相互调用。
每个应用服务器处理一个服务业务,上述每个应用服务器的功能模块能够动态扩充。
每个应用服务器均接入上述系统数据库层的分布式缓存;将所有缓慢变化的数据进行缓存,抽取的速度更快更可靠;有效针对各服务进行了业务分解,在某一服务需要增大运算能力时,通过增加该功能模块服务器的配置,扩充计算能力。
上述CDN内容分发网络模块包括多种客户端,上述客户端包括移动客户端和桌面客户端,上述客户端具有与上述系统相对应的SDK工具包。
上述的移动客户端支持安卓系统、IOS系统、还可以支持塞班系统等等客户端,上述的桌面客户端包括windows系统、Mac系统;换句话说,SDK工具包是针对上述系统语言开发的。
上述SDK工具包与上述开放API接口无缝对接;在每种终端上可以通过引用该SDK工具包进行快速的软件开发。
进一步的,CDN网络分发模块还可以包括浏览器(无需配备SDK);上述CDN内容分发网络模块采用CDN加速的方式提供文件、图片资源的快速访问,使终端显示内容更快。
上述负载均衡模块包括开放平台服务器,上述开放平台服务器用于对外提供开放API接口;具体的,开放平台服务器用于对外部的多种客户端提供与SDK工具包无缝衔接的开放API接口。
进一步的,上述负载均衡模块还可以包括web服务器。上述浏览器通过web服务器、消息队列系统与应用服务器模块交互。
上述服务注册中心模块采用zookeeper集群,上述zookeeper集群作为分布式架构的应用服务器模块的注册中心。
进一步的,上述数据交互系统还接入分布式存储;上述数据交互系统接入日志平台。
上述数据交互系统的应用服务器模块还接入分布式存储;使用分布式存储的高稳定性,保障大量采集的图片、文件信息有效保存,不会丢失。
上述数据交互系统的应用服务器模块接入日志平台。将所有服务器、操作、数据传输的日志进行记录,在出现系统异常和数据异常时,便于快速定位问题,进行异常排查。
本发明实施例提供的数据交互系统通过放大后端服务器的计算能力,有效扩充前端开放API接口的访问容量,并且动态为每类终端建立独立的开发工具包的方式,有效的降低了终端接入数据平台的开发工作量,在后续有更多的终端接入时,只需要为其提供工具包,即可无缝对接,既保障了接入的数据安全,统一了数据标准,也增强了接入的稳定性。
此外,本实施例提供的数据交互系统还做了以下技术改进:
a)传统方式在各个硬件端需要极大的开发人力配合,并且很难在极多种类的硬件中进行标准化集成。本发明实施例在各个硬件、软件终端,采用开发标准SDK方式,极大降低各个硬件端的接入成本。
b)传统硬件与服务端的通信方式基于socket端口,在数据传输上具备高效性,但是运维调试成本过高,且安全性难以保障,本发明实施例利用标准的http方式进行网络间通信,可以有效利用http的80端口或https的443端口进行安全认证,http请求方式也不影响数据传递的效率。
c)传统方式在接口收到网络请求后,在接口服务器即组装业务逻辑,并查询数据、组装并返回,在每次业务逻辑发生变化的时候,也需要进行重新部署,这种方式极大的影响了接口服务器的稳定性和性能。本发明实施例有效的将开放平台服务器和应用服务器之间进行解耦,应用接口执行动态路由,找到相应的应用服务,然后进行访问,这样可以有效保障应用接口稳定,支持极高的并发而不产生性能瓶颈,接口服务可以永久不需要部署,而将所有应用业务独立服务器进行运作,单独进行动态部署,极大的减少了应用的频繁部署所产生的整体系统性能和稳定性风险。
d)传统的业务级数据加密方式为可逆加密,在数据被截获后容易被破译并造成系统接口遭到攻击,本发明实施例采用的加密方式为不可逆加密,通过服务器端和终端(客户端)各自存放的公钥进行各自加密,并匹配其合法性,保障公钥不会泄漏,从而保障业务级数据的安全性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例提供的数据交互系统,与上述实施例提供的数据交互方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述提及的数据交互方法的步骤。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述实施例提供的数据交互方法的步骤。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种API请求的加密方法,其特征在于,应用于客户端和服务器端,包括:
排序步骤:对API请求中的筛选参数,根据参数名称的ASCII码表的顺序排序;所述筛选参数为排除参数名称为sign的参数以及参数名称为byte[]的参数外的请求参数;
拼接步骤:将排序好的参数名称和参数名称对应的参数值按排序的顺序依次拼装,生成字符串;
编码步骤:将拼接好的字符串进行编码,生成字节流;
加密步骤:使用签名算法对编码后的字节流进行摘要,得到字节流结果;所述签名算法包括MD5算法或HMAC_MD5算法;所述字节流结果采用十六进制表示。
2.一种数据交互方法,其特征在于,包括:
客户端获取事件指令转换为API请求;所述API请求用于发起开放平台服务器的调用请求,所述API请求包括公共参数和业务参数;
客户端利用如权利要求1所述的API请求的加密方法对所述API请求进行加密,生成第一字节流结果;
基于所述API请求和所述第一字节流结果,客户端构造并发起网络请求;
客户端判定网络请求是否到达开放平台服务器;
若是,则开放平台服务器对所述网络请求进行处理。
3.根据权利要求2所述的方法,其特征在于,所述开放平台服务器对所述网络请求进行处理,具体包括:
开放平台服务器判定所述网络请求是否合法;
当判定所述网络请求合法,则开放平台服务器解析客户端发送的网络请求的字符串参数,还原得到所述API请求。
4.根据权利要求3所述的方法,其特征在于,所述开放平台服务器判定所述网络请求是否合法,具体包括:
开放平台服务器利用如权利要求1所述的API请求的加密方法对获取到所述网络请求进行加密,得到第二字节流结果;
将所述第二字节流结果与客户端生成的第一字节流结果进行比较,判断两者是否一致;
若一致,则判定所述网络请求合法。
5.根据权利要求3所述的方法,其特征在于,所述开放平台服务器解析客户端发送的网络请求的字符串参数,还原得到所述API请求,具体包括:
开放平台服务器使用Json.toJavaObject方法,将网络请求字符串中的业务参数进行反序列化还原得到所述API请求。
6.根据权利要求3所述的方法,其特征在于,所述开放平台服务器对所述网络请求进行处理,还包括:
开放平台服务器匹配与所述API请求相对应的应用服务器的接口;
开放平台服务器调用与所述API请求相对应的应用服务器的接口请求。
7.根据权利要求6所述的方法,其特征在于,还包括:
应用服务器响应所述接口请求;
应用服务器判断所述接口请求是否合法;
当判断所述接口请求合法,则应用服务器执行业务逻辑,生成执行结果;
应用服务器反馈响应结果至开放平台服务器;所述响应结果包括校验结果和执行结果。
8.根据权利要求7所述的方法,其特征在于,还包括:
开放平台服务器将应用服务器反馈的响应结果反馈至客户端,以使所述客户端根据所述响应结果进行处理。
9.一种数据交互系统,其特征在于,包括:系统数据库层和系统应用层,
所述系统数据库层包括只写数据库、只读数据库、分布式缓存;
所述系统应用层包括:CDN内容分发网络模块、负载均衡模块、服务注册中心模块、应用服务器模块;
所述系统应用层的应用服务器模块采用分布式架构;每个应用服务器处理一个服务业务,每个应用服务器均接入所述系统数据库层的分布式缓存;
所述CDN内容分发网络模块包括多种客户端,所述客户端包括移动客户端和桌面客户端,所述客户端具有与所述系统相对应的SDK工具包;所述SDK工具包与所述开放API接口无缝对接;
所述负载均衡模块包括开放平台服务器,所述开放平台服务器用于对外提供开放API接口;
所述服务注册中心模块采用zookeeper集群,所述zookeeper集群作为分布式架构的应用服务器模块的注册中心。
10.根据权利要求9所述的数据交互系统,其特征在于,所述数据交互系统还接入分布式存储;所述数据交互系统接入日志平台。
CN201810308568.8A 2018-04-08 2018-04-08 Api请求的加密方法、数据交互方法及系统 Pending CN108512666A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810308568.8A CN108512666A (zh) 2018-04-08 2018-04-08 Api请求的加密方法、数据交互方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810308568.8A CN108512666A (zh) 2018-04-08 2018-04-08 Api请求的加密方法、数据交互方法及系统

Publications (1)

Publication Number Publication Date
CN108512666A true CN108512666A (zh) 2018-09-07

Family

ID=63381219

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810308568.8A Pending CN108512666A (zh) 2018-04-08 2018-04-08 Api请求的加密方法、数据交互方法及系统

Country Status (1)

Country Link
CN (1) CN108512666A (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109213741A (zh) * 2018-11-22 2019-01-15 浙江中农在线电子商务有限公司 高性能日志存储方法及装置
CN109542637A (zh) * 2018-10-26 2019-03-29 深圳点猫科技有限公司 一种教育系统的接口调用和参数防篡改方法及电子设备
CN109639706A (zh) * 2018-12-27 2019-04-16 北京城市网邻信息技术有限公司 一种请求处理方法、服务器、用户端及系统
CN109714370A (zh) * 2019-03-07 2019-05-03 四川长虹电器股份有限公司 一种基于http协议端云安全通信的实现方法
CN109769010A (zh) * 2018-12-04 2019-05-17 平安科技(深圳)有限公司 基于SDK访问CloudStack服务器的方法、装置、设备及存储介质
CN110611670A (zh) * 2019-09-12 2019-12-24 贵阳叁玖互联网医疗有限公司 一种api请求的加密方法及装置
CN111767221A (zh) * 2020-06-28 2020-10-13 北京百度网讯科技有限公司 接口测试方法、装置、设备以及存储介质
CN112468450A (zh) * 2020-11-06 2021-03-09 通联支付网络服务股份有限公司 一种api开放平台针对服务商间整合api接口的方法
CN112637360A (zh) * 2020-12-29 2021-04-09 国泰君安证券股份有限公司 实现移动端与web之间进行安全通信的系统、方法、装置、处理器及其存储介质
CN112653671A (zh) * 2020-12-10 2021-04-13 杭州安恒信息技术股份有限公司 一种客户端与服务端的网络通信方法、装置、设备及介质
CN113297147A (zh) * 2021-06-18 2021-08-24 中国信息安全测评中心 应用程序接口的风险检测方法、相关装置及存储介质
CN113537985A (zh) * 2021-07-16 2021-10-22 中国农业银行股份有限公司 数据验证方法及装置
CN114614994A (zh) * 2022-03-25 2022-06-10 芜湖雄狮汽车科技有限公司 Api接口数据的通信方法、装置、客户端及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103973695A (zh) * 2014-05-16 2014-08-06 浪潮电子信息产业股份有限公司 一种与服务器验证的签名算法
CN104901970A (zh) * 2015-06-19 2015-09-09 赛肯(北京)科技有限公司 一种二维码登录方法、服务器及系统
CN104935568A (zh) * 2015-04-20 2015-09-23 成都康赛信息技术有限公司 一种面向云平台接口鉴权签名方法
CN106649845A (zh) * 2016-12-30 2017-05-10 上海富聪金融信息服务有限公司 一种交易信息服务平台及其信息处理方法
CN107341044A (zh) * 2017-07-13 2017-11-10 郑州云海信息技术有限公司 一种分布式数据中心统一监控架构及方法
CN107800768A (zh) * 2017-09-13 2018-03-13 平安科技(深圳)有限公司 开放平台控制方法和系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103973695A (zh) * 2014-05-16 2014-08-06 浪潮电子信息产业股份有限公司 一种与服务器验证的签名算法
CN104935568A (zh) * 2015-04-20 2015-09-23 成都康赛信息技术有限公司 一种面向云平台接口鉴权签名方法
CN104901970A (zh) * 2015-06-19 2015-09-09 赛肯(北京)科技有限公司 一种二维码登录方法、服务器及系统
CN106649845A (zh) * 2016-12-30 2017-05-10 上海富聪金融信息服务有限公司 一种交易信息服务平台及其信息处理方法
CN107341044A (zh) * 2017-07-13 2017-11-10 郑州云海信息技术有限公司 一种分布式数据中心统一监控架构及方法
CN107800768A (zh) * 2017-09-13 2018-03-13 平安科技(深圳)有限公司 开放平台控制方法和系统

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
JONY413: "URI参数签名算法", 《HTTPS://WWW.CNBLOGS.COM/JONY413/ARTICLES/7864854.HTML》 *
张明星: "《Android智能穿戴设备开发实战详解》", 31 January 2016 *
王明珠: "《移动应用开发任务式驱动教程——基于Android Studio》", 31 August 2017 *
陈东敏: "《区块链技术原理及底层架构》", 31 May 2017 *

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542637A (zh) * 2018-10-26 2019-03-29 深圳点猫科技有限公司 一种教育系统的接口调用和参数防篡改方法及电子设备
CN109213741A (zh) * 2018-11-22 2019-01-15 浙江中农在线电子商务有限公司 高性能日志存储方法及装置
CN109769010B (zh) * 2018-12-04 2021-11-30 平安科技(深圳)有限公司 基于SDK访问CloudStack服务器的方法、装置、设备及存储介质
CN109769010A (zh) * 2018-12-04 2019-05-17 平安科技(深圳)有限公司 基于SDK访问CloudStack服务器的方法、装置、设备及存储介质
CN109639706A (zh) * 2018-12-27 2019-04-16 北京城市网邻信息技术有限公司 一种请求处理方法、服务器、用户端及系统
CN109714370B (zh) * 2019-03-07 2021-04-02 四川长虹电器股份有限公司 一种基于http协议端云安全通信的实现方法
CN109714370A (zh) * 2019-03-07 2019-05-03 四川长虹电器股份有限公司 一种基于http协议端云安全通信的实现方法
CN110611670A (zh) * 2019-09-12 2019-12-24 贵阳叁玖互联网医疗有限公司 一种api请求的加密方法及装置
CN111767221A (zh) * 2020-06-28 2020-10-13 北京百度网讯科技有限公司 接口测试方法、装置、设备以及存储介质
CN112468450A (zh) * 2020-11-06 2021-03-09 通联支付网络服务股份有限公司 一种api开放平台针对服务商间整合api接口的方法
CN112468450B (zh) * 2020-11-06 2023-05-23 通联支付网络服务股份有限公司 一种api开放平台针对服务商间整合api接口的方法
CN112653671A (zh) * 2020-12-10 2021-04-13 杭州安恒信息技术股份有限公司 一种客户端与服务端的网络通信方法、装置、设备及介质
CN112637360A (zh) * 2020-12-29 2021-04-09 国泰君安证券股份有限公司 实现移动端与web之间进行安全通信的系统、方法、装置、处理器及其存储介质
CN113297147A (zh) * 2021-06-18 2021-08-24 中国信息安全测评中心 应用程序接口的风险检测方法、相关装置及存储介质
CN113537985A (zh) * 2021-07-16 2021-10-22 中国农业银行股份有限公司 数据验证方法及装置
CN113537985B (zh) * 2021-07-16 2024-03-26 中国农业银行股份有限公司 数据验证方法及装置
CN114614994A (zh) * 2022-03-25 2022-06-10 芜湖雄狮汽车科技有限公司 Api接口数据的通信方法、装置、客户端及存储介质
CN114614994B (zh) * 2022-03-25 2024-05-10 芜湖雄狮汽车科技有限公司 Api接口数据的通信方法、装置、客户端及存储介质

Similar Documents

Publication Publication Date Title
CN108512666A (zh) Api请求的加密方法、数据交互方法及系统
CN111736775B (zh) 多源存储方法、装置、计算机系统及存储介质
CN108897691A (zh) 基于接口模拟服务的数据处理方法、装置、服务器和介质
CN112395300B (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN110162509A (zh) 文件比对方法、装置、计算机设备及存储介质
CN106681921B (zh) 数据参数化的实现方法和装置
CN105872051A (zh) 一种政企云平台中的能力开放管控服务平台
CN104798052B (zh) 消费者匹配的方法和装置
CN107948192A (zh) 一种区块链账户客户化识别及登录方法和系统
US20150169392A1 (en) System and method for providing an application programming interface intermediary for hypertext transfer protocol web services
CN107124281A (zh) 一种数据保全方法和相关系统
CN110781230A (zh) 一种数据接入方法、装置及设备
US20210073796A1 (en) Method of selective authentication of a blockchain user with a smart contract
US20210318857A1 (en) Platform for web services development and method therefor
WO2022095518A1 (zh) 接口自动化测试方法、装置、计算机设备及存储介质
CN110263579A (zh) 一种数据处理方法、系统及相关设备
CN115208665B (zh) 一种基于区块链的种质资源数据安全共享方法及系统
CN112615759A (zh) 全链路压测组件、全链路压测方法及装置
CN111625464A (zh) 接口的测试方法、装置、存储介质和处理器
CN109769010A (zh) 基于SDK访问CloudStack服务器的方法、装置、设备及存储介质
CN110019363A (zh) 一种校验数据的方法和装置
WO2020257123A1 (en) Systems and methods for blockchain-based authentication
CN105184559B (zh) 一种支付系统及方法
CN107749931A (zh) 互动式语音应答的方法、系统、设备及存储介质
CN106888264A (zh) 一种数据交换方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180907