信息验证方法、系统、装置与流程

文档序号:16198305发布日期:2018-12-08 06:21阅读:171来源:国知局
信息验证方法、系统、装置与流程

本发明涉及一种网络通信中客户端设备和服务器在进行特定场合的通信时进行验证的方法、系统以及存储介质,属于通信领域。

背景技术

目前,随着直播越来越受到大家的喜爱,直播平台也不断的推出各种玩法来提高观众与主播的互动参与程度。在现有的直播平台中存在一种弹幕互动的方式:观众通过在观看时,发送评论或文字信息来显示在实时播放的视频上来与主播进行互动交流。

考虑到大众的心理:所有观众都是喜爱抽奖的,因此直播平台推出了主播发出“抽奖”信息,而观众则通过发送弹幕信息来进行抽奖。在某个直播间观众比较多的时候,如果主播开启了抽奖活动发出了抽奖信息,那么同一时间内,所有的观众都会接收到该抽奖信息,并且在较短的集中时间内发送弹幕来参与抽奖,那么此时直播平台服务器就会在同一时间内收到大量弹幕,这会使得服务器的短时间处理信息的压力变得很大,容易出现延迟或是其他故障。

另外,实际情况下,在同一个直播间内也存在一些黑客或“机器人用户”(非法用户),通过编写脚本,这些伪装的非法用户不断的自动切换到不同的房间,并短时间内发送大量的弹幕来参与抽奖。一方面,由于客户使用不同的客户端设备,其计算反应速度不一,抽到奖的机会也会不同,对用户来说也是不公平的;另一方面,黑客或“机器人用户”常常使用比较好的计算机或是工作站甚至计算中心来进行以上操作,因而他们会在抽奖活动中获取优势,更多的获得中奖,而这显然背离了依赖弹幕抽奖的公平性来增强直播互动的初衷。而且,大量发送弹幕的行为会更加加重服务器的负担,更容易使得系统出现故障。

然而针对以上弹幕抽奖中服务器短时间压力增大并且容易被非法用户钻漏洞的缺陷,现有技术中并没有针对性的对用户的发送抽奖信息进行验证的方法。



技术实现要素:

本发明是为了解决上述弹幕抽奖中服务器短时间压力增大,并且容易被非法用户钻漏洞的缺陷这一问题而进行的,目的在于提供一种在服务器发出抽奖信息时,对客户端发送的弹幕信息进行信息验证的方法、系统以及装置。

本发明的发明构思为:

在本发明的设计中,当主播在主播端发出抽奖信息并发送到服务器后,该服务器会对与之通信连接的所有客户端(显然,这些客户端都处于该主播的主播房间内,与该主播处于对应关系)下发通知消息告知该房间的主播开始进行弹幕抽奖了。

那么为了防止同一时间内对所有客户端下发抽奖消息带来的服务器压力,同时也为了防止所有参与抽奖的观众通过客户端来同时发送弹幕进行抽奖,那么本发明的服务器会在随机时间对观众的客户端进行下发:比如在1秒钟内随机的下发开始抽奖的消息,那么在此1秒钟内,有的客户端会先收到弹幕抽奖的通知信息,有的客户端设备会晚收到弹幕抽奖的通知信息,从而服务器将一瞬间的抽奖弹幕消息分成了1秒钟的时间段来进行下发,那么观众在操作客户端设备进行弹幕抽奖时,其上报的弹幕也会因为时差而分布开来,从而避免了服务器同时收到大量的并发的抽奖弹幕而导致服务器的瞬时压力。

同时为了防止黑客通过编写脚本来刷抽奖弹幕,本文则会在弹幕抽奖的通知消息中增加校验字段,校验字段会通过通过对应的计算次数来消耗客户端的cpu资源,并且为了更为公平的进行抽奖,消除用户的客户端的计算能力差异,校验字段会依据客户端的设备类型,以及服务器下发弹幕抽奖通知信息的时刻,来控制客户端的计算次数,即被下发弹幕抽奖通知信息的时刻早,客户端的计算能力强的客户端的校验字段的计算次数就会多,从而抵消了客户端设备的计算能力的差异,也从根本上杜绝了黑客通过编写的协议生成“机器人用户”来刷抽奖的机会(因为他的设备好但他的计算次数多,时间长,所以无法大量发送抽奖信息),所以,本发明也提高了抽奖的公平性。

以上是本发明的发明构思,在本发明的基本发明构思的基础上进行扩展而得到以下的技术方案:

一种信息验证方法,用于在设备向服务器发送信息时进行信息的验证,包括以下步骤:

获取设备的计算能力等级l;

在不同时刻分m批次通知多个所述设备,对应每个设备的通知信息包括对应的计算能力等级l、检验字段以及该通知信息相对于最早的第一批次的批次排序d;

设备和服务器建立通信并生成共享密钥;

所述设备接收对应的所述通知信息,并将所述检验字段输入到预设的算法中计算得到计算结果,当计算结果中的预定值的个数n满足n=l+m-d时进入下一步;

将计算结果使用共享密钥加密并发送到服务器,并由服务器验证该计算结果与预先存储的结果是否匹配,如果匹配则验证通过。

本发明提供的信息验证方法,还可以具有这样的特征,其中,获取计算能力等级l的过程为:采集设备的设备信息,根据采集到的设备信息对照预先存储的设备与计算能力等级对应信息来确定该设备的计算能力等级l。

本发明提供的信息验证方法,还可以具有这样的特征,其中,分批次通知的具体步骤包括:

将选定的时间t平均分成m份;

将服务器对应的所有的设备也平均分成m份;

在第一个t/m时间内,将所述通知信息发送给第一份第一批次的设备,然后按照批次顺序发送给其他设备直至发送完毕。

本发明提供的信息验证方法,还可以具有这样的特征,其中,建立通信并生成共享密钥的过程包括以下子步骤:

当设备登录到服务器时,服务器根据该设备的用户信息生成一对公钥和私钥;

当设备登录到服务器时,设备根据检验字段和登录时间的时间戳来生成一对公钥和私钥;

服务器和各个设备互相交换公钥实现密钥共享并建立通信。

本发明提供的信息验证方法,还可以具有这样的特征,其中,所述服务器为直播平台服务器,所述设备为直播平台的供观众用户使用的设备,

所述通知信息为弹幕抽奖的通知信息,所述检验字段为随机数据。

本发明提供的信息验证方法,还可以具有这样的特征,其中,所述预设的算法为检验字段的hash值计算,对应的预定值的个数为hash值计算得到开头为0的个数。

本发明提供的信息验证方法,还可以具有这样的特征,其中,当进行特定计算得到的预定值的个数n不满足n=l+m-d时,设备会在检验字段前添加一个多位的数据然后再次进行计算直到满足条件为止。

本发明提供的信息验证方法,还可以具有这样的特征,其中,服务器验证该计算结果是否匹配的过程包括以下子步骤:

对从设备接收到的通知信息使用公共密钥进行解密;

从解密得到的数据中检查是否有检验字段和计算结果,如果没有则判定该数据是无效的,不能通过验证,如果有的话,就进入下一步;

进一步判断该检验字段和计算结果是否与服务器对应发给该设备的检验字段、计算结果相匹配,若匹配,则验证通过,否则不能通过验证。

本发明还提供一种信息的验证系统,用于在设备向服务器发送信息时进行信息的验证,其特征在于,包括:

计算能力获取模块,用于获取设备的计算能力等级l;

分批次通知模块,用于在不同时刻分m批次通知多个所述设备,对应每个设备的通知信息包括对应的计算能力等级l、检验字段以及该通知信息相对于最早的第一批次的批次排序d;

共享密钥生成模块,用于设备和服务器建立通信并生成共享密钥;

预定值计算判断模块,用于对所述检验字段进行预定计算得到计算结果,并进一步判断计算结果中的预定值的个数n是否满足n=l+m-d;

匹配判断模块,用于将预定计算的计算结果使用共享密钥加密并发送到服务器,并验证该计算结果与预先存储的结果是否匹配,如果匹配则验证通过。

本发明还提供一种信息的验证装置,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,其特征在于:处理器执行计算机程序时实现上述的方法。

发明的作用和效果在于:根据本发明所涉及的信息的验证方法,因为其具有以下的步骤:获取并确定客户端设备的计算能力等级l;在不同时刻分m批次来分批次通知多个所述客户端设备,对应每个客户端的通知信息包括对应的计算能力等级l、随机数据以及该通知信息相对于最早的第一批次的批次排序d;客户端设备和服务器建立通信并生成共享密钥;所述客户端设备接收对应的所述通知信息,并对所述随机数据进行特定计算并得到预定值,当进行特定计算得到的预定值的个数n满足n=l+m-d时进入下一步;将特定计算的计算结果使用共享密钥加密并发送到服务器,并由服务器验证该计算结果是否匹配,如果匹配则验证通过,所以

采用在不同时刻分m批次来分批次通知多个所述客户端设备能够使得有的客户端先收到弹幕抽奖的通知信息,有的客户端设备晚收到弹幕抽奖的通知信息,从而服务器将一瞬间的抽奖弹幕消息分成了多个时间段来进行下发,那么观众在操作客户端设备进行弹幕抽奖时,其上报的弹幕也会因为时差而分布开来,从而避免了服务器同时收到大量的并发的抽奖弹幕而导致服务器的瞬时压力;

采用进行特定计算得到的预定值的个数n是否满足n=l+m-d来进行计算次数(计算时间)的调节来消除用户的客户端的计算能力差异:作为校验字段的随机数据会依据客户端的设备类型,以及服务器下发弹幕抽奖通知信息的时刻,来控制客户端的计算次数,即被下发弹幕抽奖通知信息的时刻早,客户端的计算能力强的客户端的校验字段的计算次数就会多,从而抵消了客户端设备的计算能力的差异,也从根本上杜绝了黑客通过编写的协议生成“机器人用户”来刷抽奖的机会(因为他的设备好但他的计算次数多,时间长,所以无法大量发送抽奖信息),所以,本发明也提高了抽奖的公平性。

附图说明

图1为本发明的实施例中的信息验证方法的步骤示意图。

图2为本发明的实施例中建立通信并生成共享密钥的详细过程示意图;

图3是本发明是实施例中信息验证步骤的详细过程示意图;以及图4为本发明的实施例中的信息验证系统的结构示意图。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下实施例结合附图对本发明的信息验证方法、系统、存储介质的组成、结构、连接关系、具体工作流程以及工作原理、作用和效果做具体阐述作具体阐述。

以下以背景技术中的主播通过服务器发出抽奖信息,而对应的与服务器连接的设备接收该抽奖信息并进行验证的实际情况来进行详细说明。

图1为本发明的实施例中的信息验证方法的步骤示意图。

如图1所示,本实施例的信息验证方法具有步骤s1-s

步骤s1,获取设备的计算能力等级l,其由以下两个过程:

步骤s1-1,采集客户端的设备信息。首先需要采集客户端的设备信息,主要是查看当前客户端是属于什么设备,例如对于移动设备来说,其手机型号是什么,通过型号我们则可以知道该设备的计算能力,从而为后续的服务器下发验证字段的计算次数做准备。那么计算能力越好的设备,则对于验证字段相同的计算次数,那么能力越好的设备则计算的越快。当客户端登陆到直播平台服务器后,则会将设备信息deviceinfo进行记录下来。本实施例以苹果公司ios设备信息的获取为例来进行说明,具体如下:

structutsnamesysteminfo;

首先定义一个systeminfo的结构变量,用于存储获取的设备信息。

然后通过调用系统提供的接口函数uname来获取ios的设备信息,其中接口uname定义如下:

uname(structutsname*name)

其中传入参数utsname来获取设备的信息。

具体实现如下:

uname(&systeminfo);

本实施例通过调用uname并传入之前定义的变量systeminfo来存储获取到的信息。然后获取其对应的字符串systeminfo.machine存储了设备的信息。

nsstring*devicestring=[nsstringstringwithcstring:systeminfo.machineencoding:nsutf8stringencoding];

通过nsstring的接口stringwithcstring来将其转化成一个字符串的类型数据devicestring,则最终存储在devicestring中。

例如其获取iphone6设备则,devicestring得到的是iphone6,1,如果设备是iphone7,则获取到的设备信息存储到devicestring中,得到的是iphone7,1。

至此,通过这个步骤就完成了客户端设备的型号信息。

步骤s1-2,直播平台对设备的计算能力进行定级。直播平台会收集绝大多数的设备信息,并且对每个设备信息按照其计算性能进行分级,那么计算性能比较高的设备则定义为高等级,计算性能低的则定义为低等级,例如可以对设备的计算性能按照5级进行分类,例如对于ios设备来说,iphonex是当下计算性能最好的设备,则定义为5级,对于iphone8则性能会差一线,则定义为4级,对于iphone7则定义为3级,对于iphone6则可以定义为2级,对于iphone5及以下则定义为1级。同样的对于android的设备也可以进行同样的分级。那么最终在服务器存储着一份对ios和android设备的分级表格,通过该表的对应关系,任意的设备都可以得到该设备对应的计算能力等级l。

至此,通过这个步骤就完成了服务器对设备进行分级并且得到了一个设备信号与计算能力等级l的对应表格。

步骤s2,在不同时刻分m批次通知多个所述设备,对应每个设备的通知信息包括对应的计算能力等级l、检验字段以及该通知信息相对于最早的第一批次的批次排序d。

当主播开始抽奖时,那么服务器需要对该直播间的所有用户持有的设备发送开奖消息,为了不造成同一时间所有人收到弹幕抽奖同时发送抽奖消息,则服务器会在一个时间段内来分批次通知所有用户,而不是同时进行通知。

分批次通知的具体步骤包括:

将选定的时间t平均分成m份;

将服务器对应的所有的设备也平均分成m份;

在第一个t/m时间内,将所述通知信息发送给第一份第一批次的设备,然后按照批次顺序发送给其他设备直至发送完毕。

具体在本实施例中,在总时间1秒钟内对所有用户进行通知:

首先服务器会将房间用户进行平分,每200毫秒做为一个间隔,那么1秒钟则是1000毫秒,用户分成5个等份,如果是1-4个等份为相同的个数,而第5个不足,也依然分成5份。

第一个200毫秒内的用户是没有延时的,用户在收到服务器开奖通知的消息时,其消息字段中的延时字段为0,如果用户是在第二个200毫秒进行通知的,那么其延时字段则为1,同样的如果是在第5个200毫秒通知的,其延时字段则为4。最终在1秒钟内服务器会通知到所有的客户端该房间主播发出了开奖消息。并且消息字段中会携带其该通知信息相对于最早的第一批次的批次排序d。

具体的,本实施例中通知开奖的消息是:

type@=lotterystart/rid@=345/timedelay@=2/

例如本文消息中type@=lotterystart/标识是开始抽奖的消息。

消息字段rid@=345则标识房间号。

消息字段timedelay@=2则标识该抽奖消息相对于最早的第一批次的批次排序d,即该信息是在第3个200毫秒通知的,相对于最早的第一批次的批次排序为2。

为了避免黑客通过设计代码机器人或是依托性能优良的设备来刷弹幕抽奖,服务器也会下发一些数据,从而提高算法的安全和随机性,服务器下发数据则可以做到每个用户不一样,每个时刻进行更换。

另外,本实施例借鉴区块链中的工作量证明算法:区块链中,每一个新的区块的生成都是有一定的工作量来计算出正确的结果,谁先计算出正确的结果谁则生成新的区块,从而得到奖赏。本发明也使用工作量的算法来对客户端进行验证,从而每一条抽奖弹幕都是需要进行工作量的证明,从而避免黑客的脚本大量并发来抽奖而影响抽奖用户的公平性,其通知信息的工作量证明也会依据延时来做调整。具体实现如下:

a、在开奖消息中增加随机数据。

为了保障每一次的客户端的工作量证明算法的安全性,防止其通过枚举来获取到正确的值,本实施例通过服务器对每一条下发的开奖消息中增加一个随机数据,此数据是32位长度的字符串,并且每个用户都会是不一样的随机数据,每个时刻也会是不一样的随机数据,从而客户端无法得到数据产生的规律,从而无法绕过计算直接得到结果。

具体实现如下:

serverranddata[32]=rand();

其中本文则调用系统函数rand()来生成随机数数据。

其中开始抽奖的开奖消息是:

type@=lotterystart/rid@=345/timedelay@=2/

则加上随机数据后则变成:

type@=lotterystart/rid@=345/timedelay@=2/serverranddata=ac2536bcac84523697412acdeabdabc123

从而增加了随机数据字段:serverranddata=ac2536bcac84523697412acdeabdabc123。

b、在开奖消息中增加设备等级数据。

当客户端登录到直播平台服务器时,会上报当前的设备信息,服务器依据上报的设备信息来查询该设备的等级,从而将计算能力等级l下发给客户端。此等级信息则对应于设备的计算性能。之所以考虑设备的计算能力等级是为了兼顾公平性,越好的设备计算越快,所以服务器依据设备等级来下发不同的计算难度。

type@=lotterystart/rid@=345/timedelay@=2/serverranddata=ac2536bcac84523697412acdeabdabc123/level@=2/

从而增加了设备的计算能力等级l:level@=2。

至此,通过这个步骤就完成了服务器客户端抽奖的消息中进行分时段的通知客户端,并在消息中增加延时的间隔字段即该通知信息相对于最早的第一批次的批次排序d、检验字段以及设备的计算能力等级l。

步骤s3,设备和服务器建立通信并生成共享密钥。

图2为本发明的实施例中建立通信并生成共享密钥的详细过程示意图。

建立通信并生成共享密钥的过程包括以下子步骤:

s3-1,当设备登录到服务器时,服务器根据该设备的用户信息生成一对公钥和私钥。

当客户端登录到直播平台时,此时直播平台服务器则会依据该用户信息来生成一对秘钥。同时为了保障每个用户的秘钥信息不一致,提高破解的门槛,则将用户的账号以及随机数据做为私钥信息,从而保障每个用户私钥都不一致。本实施例则采用非对称rsa加密算法来生成一对公钥和私钥。具体则私钥可以使用随机数生成,公钥则调用rsa加密算法的接口函数可以生成对应的公钥,私钥和公钥是唯一配对的关系,实际的操作过程包括:

a生成随机数据

randdata=rand();

通过调用系统函数rand来生成一段随机数据randdata。

b依据房间号和随机数生成其md5值做为私钥

clientprivatekey=md5.create(userid+timestamp+randdata)

通过调用md5函数的接口md5.create来对用户id和随机数据和当前时间戳信息以及随机数拼接到一起计算其md5值,从而得到了私钥数据。

c计算公钥

clientpublickey=rsa.createpair(clientprivatekey);

公钥则调用rsa的生成配对钥匙接口rsa.createpair来生成。

从而最终服务器则生成了一对公钥和私钥信息。

至此,通过这个步骤就完成了直播平台服务器为每个登录的用户生成一对私钥和公钥信息。

s3-2,当设备登录到服务器时,设备根据检验字段和登录时间的时间戳来生成一对公钥和私钥。

当客户端登录到直播平台服务器时,服务器会为此客户端生成一对公钥私钥信息,同时客户端也会自己生成一套公钥私钥信息,客户端则会使用随机数据和时间戳来生成私钥,从而尽可能保障不同客户端是不一样的私钥和公钥。实际的操作过程包括:

a生成随机数据

randdata=rand();

通过调用系统函数rand来生成一段随机数据randdata。

b时间戳和随机数生成其md5值做为私钥

serverprivatekey=md5.create(randdata+timestamp)通过调用md5函数的接口md5.create来对随机数据和当前时间戳信息拼接到一起计算其md5值,从而得到了私钥数据。

c计算公钥

serverpublickey=rsa.createpair(serverprivatekey);

公钥则调用rsa的生成配对钥匙接口rsa.createpair来生成。

从而最终客户端则生成了一对公钥和私钥信息。

此时收到直播平台服务器下发的公钥信息后,则将自己的公钥信息发送给直播平台服务器。

至此,通过这个步骤就实现了客户端生成一对公钥和私钥信息。

s3-3,服务器和各个设备互相交换公钥实现密钥共享并建立通信。

直播平台服务器和客户端互换各自的公钥信息,来生成一个共享的秘钥,并且客户端和服务器生成的共享秘钥是同一个值。实际的操作过程包括:

a互换公钥

直播平台服务器将服务器的公钥serverpublickey发送给客户端。客户端将自己的公钥clientpublickey发送给直播平台服务器。

b直播平台生成共享秘钥

使用sharekey=rsa.createsharekey(clientpublickey,serverprivatekey)代码来实现;

c客户端生成共享秘钥。

使用sharekey=rsa.createsharekey(serverpublickey,clientprivatekey)代码来实现;

从而直播平台生成的共享密钥和客户端生成的共享密钥2个sharekey的值是一致的。

经过s3-1到s3-3这三个子步骤,设备和服务器建立通信并生成了共享密钥。

步骤s4,所述设备接收对应的所述通知信息,并将所述检验字段输入到预设的算法中计算得到计算结果,当计算结果中的预定值的个数n满足n=l+m-d时进入下一步。

客户端接收对应的开奖信息的通知信息,并计算验证字段。

当客户端收到服务器的下发的开始抽奖的开奖消息后,需要先计算验证字段,通过一定的算法,得到验证字段后才能发送抽奖的消息。本文则使用工作量证明的算法。

本实施例是客户端收到随机数据后,需要对随机数据计算hash值,同时计算hash值时客户端会生成一个32位的数据拼接到一起进行计算,并且需要保障计算的hash结果中,开头为0的个数n必须满足服务器的要求,那么0的个数越多,则需要计算的时间也会越多。

如果不满足要求,则客户端会再次的更改生成的32位的数据,直到满足要求为止。那么在服务器下发的开始抽奖消息中,设备的等级越高则计算的性能越好,客户端则需要对应的计算的开头为0的个数n越多,同时开奖消息下发时,delay的时间越长,则开头为0的计算个数越少。

计算客户端(与服务器连接的设备)需要计算出hash结果为0的个数n的计算公式为:

n=l+m-d;

其中l是设备的计算能力等级,等级越高,所需要计算hash值为0的个数越多。

其中m是将选定的分批次发送的总时间t平均分成的份数。

d是该通知信息相对于最早的第一批次的批次排序,体现的是下发的开奖信息的延时,共分m个等级,延时越多,则其需要计算的0的个数越少。

预定的hash计算的方法操作如下:

clientdata=00000000000000000000000000000001

hashresult=md5.create(clientdata+serverranddata);

得到计算结果后,对结果判定hashresult的开头是否有满足hash结果为0的个数n,如果不满足,则需要将clientdata进行变换,变换的算法则是进行递增。

clientdata=00000000000000000000000000000002

hashresult=md5.create(clientdata+serverranddata);

再此判定,是否满足,依次类推,直到计算的结果满足n的个数为止。

图3是本发明是实施例中信息验证步骤的详细过程示意图。

步骤s5,将计算结果使用共享密钥加密并发送到服务器,并由服务器验证该计算结果与预先存储的结果是否匹配,如果匹配则验证通过。具体包括以下的子步骤:

步骤s5-1,客户端设备将计算结果生成抽奖消息。

在客户端的抽奖消息字段中需要增加clientdata和计算的hashresult结果发生到服务器,服务器则会验证客户端计算的是否正确。

发送的抽奖信息为:

type@=lottery/rid@=345/clientdata@=00000000000000000000000000000002/ashresult@=/00ac23d6a5c14e2a3acbe32125478993/其中,ashresult@=/00ac23d6a5c14e2a3acbe32125478993/即为计算过结果。

步骤s5-2,客户端将抽奖信息进行加密后上报到服务器。

客户端在生成抽奖信息后,会将数据使用sharekey加密后再上报到服务器,并且本文会使用更为安全的加密算法,在上述的步骤s3-1到s3-3这三个步骤中,设备和服务器建立通信并生成了共享密钥sharekey。

客户端会将抽奖的消息进行加密后上报到服务器,该上报过程通过以下的代码实现:

encryptdata=aes.ecnrypt(“type@=lottery/rid@=345/clientdata@=00000000000000000000000000000002/hashresult@=/00ac23d6a5c14e2a3acbe32125478993/”,sharekey);

其中加密的数据则是客户端上报的开奖消息,其中加密的key则是使用协商的共享sharekey。

至此,通过这个步骤就完成了客户端上报加密结果。

步骤s5-3,服务器验证客户端计算结果。

当服务器收到客户端上报的计算结果后,则会对结果进行解密及验证,验证客户端的计算结果是否正确,如果正确才能够参与到抽奖,否则服务器认为是一个非法的请求来刷抽奖。具体验证过程如下:

步骤s5-3-1,对从设备接收到的通知信息使用公共密钥进行解密。服务器对数据进行解密,使用如下的代码完成:

data=aes.decrypt(encryptdata,sharekey)。

步骤s5-3-2,从解密得到的数据中检查是否有检验字段和计算结果,如果没有则判定该数据是无效的,不能通过验证,如果有的话,就进入下一步。具体就是服务器从解密得到的数据data中看起是否有clientdata和hashresult,如果没有则认为是非法的,验证不予通过。

步骤s5-3-3,进一步判断该检验字段和计算结果是否与服务器对应发给该设备的检验字段、计算结果相匹配,若匹配,则验证通过,否则不能通过验证。

服务器会记录对每个客户端下发的随机数据,那么服务器同时也记录了客户端被下发通知信息即开奖信息的delay延时即该通知信息相对于最早的第一批次的批次排序d,从而服务器会根据n=l+m-d计算出客户端的hash结果中0的个数n,那么服务器则会判断hashresult中0的个数n是否满足要求,如果不满足则认为是非法的,如果满足,进一步的服务器会计算客户端的计算结果是否正确。

serverhashresult=md5.create(clientdata+serverranddata);

通过以上代码判断服务器预先存储的结果serverhashresult和客户端上报的hashresult是否一致,如果不一致则说明是非法的。

从算法可以看出,本文服务器只需要进行一次计算,而客户端为了计算出满足要求的0的个数,需要不断的变换clientdata并多次计算出hashresult。

至此,通过这个步骤就完成了服务器对客户端在根据开奖信息做出的包含有计算结果的请求抽奖信息进行合法性验证判断的权过程。

上述实施例中,预设的算法为计算随机数据的hash值,计算结果中的预定值为0,通过设定预定值0的个数来调节设备的计算时间,从而消除各种不同设备之间的计算能力的差异,作为一种替代,也可以采用计算某个随机数据的hash值为1、2、3等其他数值的个数来进行调节。

上述实施例中,检验字段为随机数据,也可以是其他的较长的字符。

图4为本发明的实施例中的信息验证系统的结构示意图。

以下根据附图4详细介绍信息验证系统100,用于在设备向服务器发送信息时进行信息的验证,其特征在于,包括:

计算能力获取模块101,用于获取设备的计算能力等级l;

分批次通知模块102,用于在不同时刻分m批次通知多个所述设备,对应每个设备的通知信息包括对应的计算能力等级l、检验字段以及该通知信息相对于最早的第一批次的批次排序d;

共享密钥生成模块103,用于设备和服务器建立通信并生成共享密钥;

预定值计算判断模块104,用于对所述检验字段进行预定计算得到计算结果,并进一步判断计算结果中的预定值的个数n是否满足n=l+m-d;

匹配判断模块105,用于将预定计算的计算结果使用共享密钥加密并发送到服务器,并验证该计算结果与预先存储的结果是否匹配,如果匹配则验证通过。

以下进一步介绍信息验证装置,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,其特征在于:处理器执行计算机程序时实现以下的方法:

s1,获取设备的计算能力等级l;

s2,在不同时刻分m批次通知多个所述设备,对应每个设备的通知信息包括对应的计算能力等级l、检验字段以及该通知信息相对于最早的第一批次的批次排序d;

s3,设备和服务器建立通信并生成共享密钥;

s4,所述设备接收对应的所述通知信息,并将所述检验字段输入到预设的算法中计算得到计算结果,当计算结果中的预定值的个数n满足n=l+m-d时进入下一步;

s5,将计算结果使用共享密钥加密并发送到服务器,并由服务器验证该计算结果与预先存储的结果是否匹配,如果匹配则验证通过。

实施例的作用和效果在于:根据本发明所涉及的信息的验证方法,因为其具有以下的步骤:获取并确定客户端设备的计算能力等级l;在不同时刻分m批次来分批次通知多个所述客户端设备,对应每个客户端的通知信息包括对应的计算能力等级l、随机数据以及该通知信息相对于最早的第一批次的批次排序d;客户端设备和服务器建立通信并生成共享密钥;所述客户端设备接收对应的所述通知信息,并对所述随机数据进行特定计算并得到预定值,当进行特定计算得到的预定值的个数n满足n=l+m-d时进入下一步;将特定计算的计算结果使用共享密钥加密并发送到服务器,并由服务器验证该计算结果是否匹配,如果匹配则验证通过,所以

采用在不同时刻分m批次来分批次通知多个所述客户端设备能够使得有的客户端先收到弹幕抽奖的通知信息,有的客户端设备晚收到弹幕抽奖的通知信息,从而服务器将一瞬间的抽奖弹幕消息分成了多个时间段来进行下发,那么观众在操作客户端设备进行弹幕抽奖时,其上报的弹幕也会因为时差而分布开来,从而避免了服务器同时收到大量的并发的抽奖弹幕而导致服务器的瞬时压力;

采用进行特定计算得到的预定值的个数n是否满足n=l+m-d来进行计算次数(计算时间)的调节来消除用户的客户端的计算能力差异:作为校验字段的随机数据会依据客户端的设备类型,以及服务器下发弹幕抽奖通知信息的时刻,来控制客户端的计算次数,即被下发弹幕抽奖通知信息的时刻早,客户端的计算能力强的客户端的校验字段的计算次数就会多,从而抵消了客户端设备的计算能力的差异,也从根本上杜绝了黑客通过编写的协议生成“机器人用户”来刷抽奖的机会(因为他的设备好但他的计算次数多,时间长,所以无法大量发送抽奖信息),所以,本发明也提高了抽奖的公平性。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

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