一种弹幕验证方法、计算机设备和存储介质与流程

文档序号:15752373发布日期:2018-10-26 18:01阅读:198来源:国知局
一种弹幕验证方法、计算机设备和存储介质与流程

本发明属于计算机技术领域,尤其涉及一种弹幕验证方法、计算机设备和存储介质。



背景技术:

目前,直播越来越受到大家的欢迎。而弹幕则是直播中非常好的互动方式。例如,主播在直播时,观众可以通过发送弹幕来发表评论,与主播进行互动。任何观众发送的弹幕在该直播间的所有用户都可以看到。

然而,有一些非法用户,利用弹幕能够被所有观众看到的特点,而不断的在直播平台通过发送弹幕来打广告,例如,通过建立一条与直播平台服务器的链接并且伪造弹幕协议来刷弹幕,并且编写自动化脚本来刷弹幕。现有的做法是在直播平台服务端进行弹幕过滤及防刷的识别,来阻挡刷弹幕的行为。

可见,现有技术对于刷弹幕的处理方式比较单一。



技术实现要素:

本申请实施例通过提供一种弹幕验证方法、计算机设备和存储介质,解决了现有技术中,对于刷弹幕的处理方式比较单一的问题。

第一方面,本申请实施例提供了一种弹幕验证方法,所述方法应用于客户端设备,所述方法包括:

通过neon指令设计基本的运算单元;

根据所述基本的运算单元设计neon加密算法;

发送登录协议到直播平台的弹幕服务器;

若登录成功,接收所述弹幕服务器返回的token字段、随机字段r以及公钥pkey字段;

生成弹幕协议,所述弹幕协议包括弹幕内容和弹幕协议的时间戳;

根据所述neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到n_r字段;

根据所述token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、所述弹幕内容以及所述n_r字段计算k字段,其中,所述直播间的房间号通过向所述弹幕服务器发送获取房间信息的协议来获取,所述弹幕的发送次数为弹幕发送成功的次数,根据所述弹幕服务器返回的弹幕发送成功消息计算得到,初始值为0;

对所述k字段进行加密;

在所述弹幕协议中加入加密后的k字段,并向所述弹幕服务器发送加入加密后的k字段的弹幕协议;

若弹幕发送成功,则接收所述弹幕服务器发送的下一个随机字段r,所述下一个随机字段r用于计算下一个弹幕协议的k字段。

可选的,所述根据所述token字段、直播间的房间号、弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及所述n_r字段计算k字段包括根据以下公式计算k字段:

k=md5.create(token+roomid+ts+no+content+n_r);

其中,md5.create是hash算法md5的计算接口;

token是所述token字段;

roomid是所述直播间的房间号;

ts是所述弹幕协议的时间戳;

no是所述弹幕的发送次数;

content是所述弹幕内容;

n_r是对所述随机字段r进行neon加密算法的结果。

可选的,所述对所述k字段进行加密,包括根据以下公式对所述k字段进行加密:

encryptk=tea.encrypt(r,ts)

其中tea.encrypt是加密算法tea的加密接口;

r是所述随机字段r;

ts是所述弹幕协议的时间戳;

encryptk是所述k字段的加密结果。

第二方面,本申请还提供了一种弹幕验证方法,其特征在于,所述方法应用于直播平台的弹幕服务器,所述方法包括:

接收客户端设备发送的登录协议;

若登录成功,向所述客户端设备返回token字段、随机字段r以及公钥pkey字段;

接收所述客户端设备发送的弹幕协议,所述弹幕协议包含加密后的k字段;

判断所述弹幕协议的时间戳与所述弹幕服务器的时间戳的差值是否在预置范围内,若是,对所述加密后的k字段进行解密,从而得到k字段;

在配置文件中查找n_r字段,所述n_r字段是根据neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到,所述配置文件为所述随机字段r和所述n_r字段的对应关系;

根据所述token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及所述n_r字段计算k字段;

判断解密得到的k字段与计算得到的k字段是否一致,若是,则验证通过,并向所述客户端设备发送下一个随机字段r。

可选的,所述根据所述token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及所述n_r字段计算k字段包括根据以下公式计算k字段:

k=md5.create(token+roomid+ts+no+content+n_r);

其中,md5.create是hash算法md5的计算接口;

token是所述token字段;

roomid是所述直播间的房间号;

ts是所述弹幕协议的时间戳;

no是所述弹幕的发送次数;

content是所述弹幕内容;

n_r是对所述随机字段r进行neon加密算法的结果。

可选的,所述对所述加密后的k字段进行解密,从而得到k字段包括根据以下公式对所述加密后的k字段进行解密,从而得到k字段:

k=tea.decrypt(r,encryptk);

其中,tea.decrypt是tea的加密算法的解密接口;

r是所述随机字段r;

encryptk是所述加密后的k字段。

第三方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:

通过neon指令设计基本的运算单元;

根据所述基本的运算单元设计neon加密算法;

发送登录协议到直播平台的弹幕服务器;

若登录成功,接收所述弹幕服务器返回的token字段、随机字段r以及公钥pkey字段;

生成弹幕协议,所述弹幕协议包括弹幕内容和弹幕协议的时间戳;

根据所述neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到n_r字段;

根据所述token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、所述弹幕内容以及所述n_r字段计算k字段,其中,所述直播间的房间号通过向所述弹幕服务器发送获取房间信息的协议来获取,所述弹幕的发送次数为弹幕发送成功的次数,根据所述弹幕服务器返回的弹幕发送成功消息计算得到,初始值为0;

对所述k字段进行加密;

在所述弹幕协议中加入加密后的k字段,并向所述弹幕服务器发送加入加密后的k字段的弹幕协议;

若弹幕发送成功,则接收所述弹幕服务器发送的下一个随机字段r,所述下一个随机字段r用于计算下一个弹幕协议的k字段。

第四方面,本申请还提供了一种计算机设备,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:

通过neon指令设计基本的运算单元;

根据所述基本的运算单元设计neon加密算法;

发送登录协议到直播平台的弹幕服务器;

若登录成功,接收所述弹幕服务器返回的token字段、随机字段r以及公钥pkey字段;

生成弹幕协议,所述弹幕协议包括弹幕内容和弹幕协议的时间戳;

根据所述neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到n_r字段;

根据所述token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、所述弹幕内容以及所述n_r字段计算k字段,其中,所述直播间的房间号通过向所述弹幕服务器发送获取房间信息的协议来获取,所述弹幕的发送次数为弹幕发送成功的次数,根据所述弹幕服务器返回的弹幕发送成功消息计算得到,初始值为0;

对所述k字段进行加密;

在所述弹幕协议中加入加密后的k字段,并向所述弹幕服务器发送加入加密后的k字段的弹幕协议;

若弹幕发送成功,则接收所述弹幕服务器发送的下一个随机字段r,所述下一个随机字段r用于计算下一个弹幕协议的k字段。

第五方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:

接收客户端设备发送的登录协议;

若登录成功,向所述客户端设备返回token字段、随机字段r以及公钥pkey字段;

接收所述客户端设备发送的弹幕协议,所述弹幕协议包含加密后的k字段;

判断所述弹幕协议的时间戳与所述弹幕服务器的时间戳的差值是否在预置范围内,若是,对所述加密后的k字段进行解密,从而得到k字段;

在配置文件中查找n_r字段,所述n_r字段是根据neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到,所述配置文件为所述随机字段r和所述n_r字段的对应关系;

根据所述token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及所述n_r字段计算k字段;

判断解密得到的k字段与计算得到的k字段是否一致,若是,则验证通过,并向所述客户端设备发送下一个随机字段r。

第六方面,本申请还提供了一种计算机设备,包括处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:

接收客户端设备发送的登录协议;

若登录成功,向所述客户端设备返回token字段、随机字段r以及公钥pkey字段;

接收所述客户端设备发送的弹幕协议,所述弹幕协议包含加密后的k字段;

判断所述弹幕协议的时间戳与所述弹幕服务器的时间戳的差值是否在预置范围内,若是,对所述加密后的k字段进行解密,从而得到k字段;

在配置文件中查找n_r字段,所述n_r字段是根据neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到,所述配置文件为所述随机字段r和所述n_r字段的对应关系;

根据所述token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及所述n_r字段计算k字段;

判断解密得到的k字段与计算得到的k字段是否一致,若是,则验证通过,并向所述客户端设备发送下一个随机字段r。

本申请实施例中,客户端设备通过neon指令设计基本的运算单元并根据所述基本的运算单元设计neon加密算法;发送登录协议到直播平台的弹幕服务器;弹幕服务器对登录协议进行验证,验证通过,则登录成功,所述弹幕服务器向客户端返回token字段、随机字段r以及公钥pkey字段;客户端设备生成弹幕协议;客户端设备根据所述neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到n_r字段;客户端设备根据所述token字段、直播间的房间号、弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及n_r字段计算k字段,并对所述k字段进行加密;在所述弹幕协议中加入加密后的k字段,并向所述弹幕服务器发送加入加密后的k字段的弹幕协议;弹幕服务器接收到弹幕协议后,先判断所述弹幕协议的时间戳与所述弹幕服务器的时间戳的差值是否在预置范围内,若是,对所述加密后的k字段进行解密,从而得到k字段;再在配置文件中查找n_r字段,所述n_r字段是根据neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到,所述配置文件为所述随机字段r和所述n_r字段的对应关系;然后根据token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及n_r字段计算k字段;判断解密得到的k字段与弹幕服务器自行计算得到的k字段是否一致,若是,则验证通过,可以在直播间播放该弹幕内容,并向所述客户端设备发送下一个随机字段r,客户端设备可以根据下一个随机字段r计算下一个弹幕协议的k字段。可见,本申请实施例可以通过登录协议的验证来及时发现非法用户,以及通过验证k字段来识别非法弹幕协议,丰富了处理刷弹幕的方式。

另外,由于neon指令则只能运行于arm芯片上,而目前移动端上使用的处理器正是arm芯片,因此基于此指令设计的加密算法只能运行于移动设备上,从而可以阻挡黑客通过服务器来计算正确的发送弹幕验证数据。进一步的,弹幕服务器随机字段r的下发,也增强了弹幕服务器对于客户端设备生成k字段的控制,客户端每一次生成k字段,都必须依赖弹幕服务器返回的随机字段r。

附图说明

图1为本申请实施例中提供的一个弹幕验证方法的流程图;

图2为本申请实施例中提供的另一个弹幕验证方法的流程图;

图3为本申请实施例中提供的弹幕验证方法的交互图;

图4为本申请实施例中提供的一个计算机可读存储介质的结构示意图;

图5为本申请实施例中提供的一个计算机设备的结构示意图;

图6为本申请实施例中提供的另一个计算机可读存储介质的结构示意图;

图7为本申请实施例中提供的另一个计算机设备的结构示意图;

具体实施方式

本申请实施例提供了一种弹幕验证方法、计算机设备和存储介质,解决了现有技术中,对于刷弹幕的处理方式比较单一的问题。本申请实施例可以通过登录协议的验证来及时发现非法用户,以及通过验证k字段来识别非法弹幕协议,丰富了处理刷弹幕的方式。

为了更好的理解上述技术方案,以下结合附图以及具体实施例,对上述技术方案进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。同时,为了方便介绍本发明实施例中的技术方案,下文将基于包括直播平台的弹幕服务器和客户端设备的网络结构进行描述,并不用于限定本申请,其中,客户端设备与弹幕服务器通过tcp协议进行连接。可以理解的是,本申请实施例使用的函数名称或变量名称等,并不用于限定本申请,在一些其他可能的实现方式中,也可以使用其他命名方式。

实施例一:

请参阅图1,本实施例提供的一种弹幕验证方法,所述方法应用于客户端设备,所述方法包括以下步骤:

s101、通过neon指令设计基本的运算单元;

s102、根据所述基本的运算单元设计neon加密算法;

s103、发送登录协议到直播平台的弹幕服务器;

s104、若登录成功,接收所述弹幕服务器返回的token字段、随机字段r以及公钥pkey字段;

s105、生成弹幕协议;

其中,所述弹幕协议包括弹幕内容和弹幕协议的时间戳。

s106、根据所述neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到n_r字段;

s107、根据所述token字段、直播间的房间号、弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及所述n_r字段计算k字段;

其中,所述直播间的房间号通过向所述弹幕服务器发送获取房间信息的协议来获取,所述弹幕的发送次数为弹幕发送成功的次数,根据所述弹幕服务器返回的弹幕发送成功消息计算得到,初始值为0。

s108、对所述k字段进行加密;

s109、在所述弹幕协议中加入加密后的k字段,并向所述弹幕服务器发送加入加密后的k字段的弹幕协议;

s110、若弹幕发送成功,则接收所述弹幕服务器发送的下一个随机字段r,所述下一个随机字段r用于计算下一个弹幕协议的k字段。

可见,本实施例在客户端设备侧增加了登录协议,以及在弹幕协议中加入了k字段,以此来区分非法用户和非法弹幕协议,丰富了处理刷弹幕的方式。

以上是基于客户端设备的弹幕验证方法,基于同一发明构思,本申请还提供了另一种弹幕验证方法,该方法应用于直播平台的弹幕服务器,详见图2,下面将结合图2对实施例二进行介绍。

实施例二:

请参阅图2,本实施例提供的一种弹幕验证方法,所述方法应用于直播平台的弹幕服务器,所述方法包括以下步骤:

s201、接收客户端设备发送的登录协议;

s202、若登录成功,向所述客户端设备返回token字段、随机字段r以及公钥pkey字段;

s203、接收所述客户端设备发送的弹幕协议,所述弹幕协议包含加密后的k字段;

s204、判断所述弹幕协议的时间戳与所述弹幕服务器的时间戳的差值是否在预置范围内,若是,对所述加密后的k字段进行解密,从而得到k字段;

s205、在配置文件中查找n_r字段;

其中,所述n_r字段是根据neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到,所述配置文件为所述随机字段r和所述n_r字段的对应关系。

s206、根据所述token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及所述n_r字段计算k字段;

s207、判断解密得到的k字段与计算得到的k字段是否一致,若是,则验证通过,并向所述客户端设备发送下一个随机字段r。

可见,本实施例在弹幕服务器侧增加了登录协议的验证,以及弹幕协议中k字段的验证,以此来区分非法用户和非法弹幕协议,丰富了处理刷弹幕的方式。

本申请实施例二提供的弹幕验证方法及本申请实施例一提供的弹幕验证方法属于同一构思,为了更好地理解本申请,下面将结合图3从客户端设备与弹幕服务器之间交互的角度进行详细说明,请见实施例三。

实施例三:

请参阅图3,本实施例从客户端设备与弹幕服务器交互的角度提供了一种弹幕验证方法,所述方法包括以下步骤:

s301、客户端设备通过neon指令设计基本的运算单元;

其中neon指令中有逻辑运算指令,例如:vadd按位与指令、按位异或指令veor、左移指令vshl、右移指令vshr、加法指令vadd、减法指令vsub、乘法指令vmul等。一个复杂的加解密算法都是由一个个简单的逻辑算术运算所组成,所以可以通过neon指令提供的基本的运算来构造一些基本的加解密算法的基础运算单元。并且需要结合该指令的单指令多数据流,可以并行的对多个数据同时操作,从而运算速度极快。基本的运算单元的具体设计如下:

设计对输入数据进行加法的基本运算单元。

此函数是对数组pdata中的每个数据对应的加上padd中的数据。

neonaddencode(uint8_t*pdata,uint8_t*padd,uint32_tndatalen)

{

for(inti=0;i<ndatalen;i+=8)

{

uint8x8_tsrcdata=vld1_u8(pdata);

将原始的数据pdata转换成一个8位的向量,向量的每个元素的数据类型为uint8_t类型。

uint8x8_tadddata=vld1_u8(padd);

将原始的数据add常量转换成一个8位的向量,向量的每个元素的数据类型为uint8_t类型。

uint8x8_tresult=vadd_u8(srcdata,adddata);

对srcdata和adddata进行相加操作。

此操作每次都是对8个数值相加,相当于同时一次性的加了8个数。从而单指令多数据流操作,速度上至少快了8倍的关系。

设计对输入数据进行乘法的基本运算单元。

此函数是对数组pdata中的每个数据对应的乘上padd中的数据。

neonmulencode(uint8_t*pdata,uint8_t*padd,uint32_tndatalen)

{

for(inti=0;i<ndatalen;i+=8)

{

uint8x8_tsrcdata=vld1_u8(pdata);

将原始的数据pdata转换成一个8位的向量,向量的每个元素的数据类型为uint8_t类型。

uint8x8_tadddata=vld1_u8(padd);

将原始的数据add常量转换成一个8位的向量,向量的每个元素的数据类型为uint8_t类型。

uint8x8_tresult=vmul_u8(srcdata,adddata);

对srcdata和adddata进行相乘操作。

此操作每次都是对8个数值相加,相当于同时一次性的加了8个数。从而单指令多数据流操作,速度上至少快了8倍的关系。

同样的方式还可以编写出减法、异或、移位等函数的操作,不再赘述。通过这个步骤就完成了对数据进行基本的算术运算,包括加法、减法、乘法、异或、左移、右移等运算单元。

s302、客户端设备根据所述基本的运算单元设计neon加密算法;

有了加密算法的基本运算单元,并且他们的基本的操作都是使用neon指令来操作,那么设计的neon加密算法是基于这种基本运算单元,其最终的整个加密算法就都是基于neon指令的。本实施例中,通过弹幕服务器生成随机字段r,下发到客户端设备,客户端设备对随机字段r使用加密算法计算后得到一串结果上报到弹幕服务器。其原始数据是:pdata=“firstpagetesthit1234566...”,其原始数据是一串很长的字符串,需要说明的是,这里的原始数据指随机字段r。

首先当客户端设备链接弹幕服务器时,则弹幕服务器可以依据该用户生成一串随机数据作为公钥pkey字段,该数据会用作客户端设备后续的发送弹幕加固算法中的key字段。同时弹幕服务器会保存该key字段,用于后续对客户端设备上报的验证字段的验证。

假设key:pkey=“abcdef1234567899...”;

那么本实施例可以将原始的数据和key值转换成去调用基本的加密算法的单元操作。例如:

addencode(pdata,pkey,pdatalen);

那么此操作则是对pdata的数据和pkey的数据进行相加操作来加密。

mulencode(pdata,pkey,pdatalen);

此操作则是对pdata的数据和pkey的数据进行相乘操作来加密。

llencode(pdata,pkey,pdatalen);

此操作则是对pdata的数据和pkey的数据进行移位操作来加密。

为了考虑更为复杂,所以本实施例可以对上述基本的运算操作通过跟多的叠加来使得算法更为复杂,例如可以设计成100条加法操作,和200条移位操作随机的混合到一起,从而最终对原始数据进行加密后得到一个加密的值,此处不做太多限定。

举一个例子,本实施例对于移动端的neon算法编写如下:

voidneonencode(uint8_t*pdata,uint32_tpdatalen,uint8_t*pkey)

{

neonaddencode(pdata,pkey,pdatalen);

neonaddencode(pdata,pkey,pdatalen);

neonmulencode(pdata,pkey,pdatalen);

neonllencode(pdata,pkey,pdatalen);

neonmulencode(pdata,pkey,pdatalen);

...

}

此算法最终则会将输入的数据pdata与pkey进行一些列的算术运算,从而最终实现了对数据进行加密的操作。

s303、客户端设备发送登录协议到直播平台的弹幕服务器;

相应的,弹幕服务器接收客户端设备发送的登录协议。

具体的,对于通过tcp成功链接到直播平台的弹幕服务器的客户端设备,客户端设备主动通过账号密码登录。客户端设备发送登录协议到直播平台的弹幕服务器,弹幕服务器判断客户端设备的登录信息的合法性,以及是否是注册用户,如果登录信息不合法或者不是注册用户,则登录失败,弹幕服务器会主动断开该链接,从而虚假客户端或者非注册用户将无法在直播平台发送弹幕。而且,登录协议会对用户的账号密码经过复杂的加密验证,弹幕服务器则会对用户的登录加密验证进行核对,若核对正确,则登录成功,说明客户端设备是合法客户端设备,才可以进行后续的发送弹幕功能。

还需要说明的是,客户端设备包括但不限于手机、平板电脑、pda(personaldigitalassistant,个人数字助理)、车载电脑、智能手表等基于arm芯片的设备。

s304、若登录成功,客户端设备接收所述弹幕服务器返回的token字段、随机字段r以及公钥pkey字段;

相应的,若登录成功,弹幕服务器向所述客户端设备返回token字段、随机字段r以及公钥pkey字段。

token(令牌)是可以有效验证客户端设备是否是一个直播平台注册登陆的用户,并且token能够保障不同的用户其token值是不一样的。本实施例中,将把token字段加入到弹幕验证字段的计算中,从而保障了不同的用户,最终计算的验证字段是不一样的。

随机字段r是由弹幕服务器生成的一个随机数,具体的,可以通过调用系统随机函数生成的一个16位的随机数,并对应该客户端设备记录此数据,同时,弹幕服务器可以在回复给客户端设备的登录返回消息中,以及后续的发送弹幕协议中携带此随机字段r,以使得客户端设备在每次发送弹幕协议时,都可以使用不同的随机字段r计算k字段。可见,客户端设备每次发送弹幕无法独自完成验证字段的计算,必须通过服务器的下发验证字段才能完成下一次弹幕的验证字段的计算,极大的增强了弹幕服务器控制客户端设备的能力。

举一个例子,现有的弹幕服务器回复客户端设备的验证协议如下,该协议包括弹幕发送成功消息或弹幕发送失败消息,也可以称作弹幕发送协议,用于通知客户端设备弹幕是否发送成功:

type@=chatres/len=50/code@=0/

其中type@=chatres则是服务器回复的消息类型;

其中len=50则是整个弹幕协议的内容长度;

其中code@=0标示此条弹幕发送成功。

本实施例在此协议中增加一个弹幕服务器下发的字段信息,即随机字段r,用于客户端下次发送弹幕时,参与弹幕协议的验证计算中。

本实施例对每一条发送给弹幕服务器的弹幕协议,都生成一个16位长度的随机数,并将其加入到回复给客户端设备的验证协议中。具体实现可以使用函数r=rand(),弹幕服务器调用系统随机函数来生成一个16位的随机数,并对该客户端设备记录此数据,同时在现有回复给客户端的发送弹幕协议中携带此字段信息,举一个例子,增加随机字段r后的验证协议如下:

type@=chatres/len=50/code@=0/r@=48ac3dbca9823456/

同时,由于客户端的第一条弹幕协议是没有服务器回复验证协议的弹幕协议,所以第一条弹幕协议的随机字段r由客户端设备登陆弹幕服务器时,弹幕服务器在登录返回的消息中携带此字段。

另外,本实施例还增加了一个公钥pkey字段用于对随机字段r进行neon加密运算。

s305、客户端设备生成弹幕协议;

其中,所述弹幕协议包括弹幕内容和弹幕协议的时间戳。可以理解的是,该弹幕协议为现有的弹幕协议,举个例子,现有的弹幕协议如下:

type@=chatmessage/content@=666/style@=/ts@=1520128375/

其中“type@=chatmessage”表示此条协议是发送弹幕的协议。

其中“content@=666”表示此条弹幕内容是“666”。

其中“style@=”表示此条弹幕的样式,颜色大小等等。

其中“ts@=1520128375”表示此条弹幕协议的时间戳信息。

本实施例则在现有的弹幕协议中增加一个验证字段k字段,用于验证弹幕协议的合法性。

s306、客户端设备根据所述neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到n_r字段;

获取到了弹幕服务器下发的随机字段r后,客户端则需要使用之前编写的neon加密算法来对随机字段r进行加密,具体的,可以使用以下公式对随机字段r进行加密

n_r=neonencode(r,32,pkey);

其中neonencode为neon加密算法,是客户端设备之前使用neon指令编写的加密算法;

其中r字段是弹幕服务器下发的随机字段r;

其中pkey则是登录弹幕服务器下发的加密使用的公钥pkey字段。

s307、客户端设备根据所述token字段、直播间的房间号、弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及所述n_r字段计算k字段;

具体的,可以通过以下公式计算k字段:

k=md5.create(token+roomid+ts+no+content+n_r);

其中,md5.create是hash算法md5的计算接口,本实施例中采用md5计算k字段,最终得到一个固定长度的32位的验证字段,可以理解的是,在一些可能的实现方式中,也可以选用其他的算法,此处不做太多限定;

token是所述token字段,其中,加入token可以实现不同的用户,最终计算的验证字段是不一样的;

roomid是所述直播间的房间号,其中,加入直播间的房间号,可以实现同一个用户、同一个弹幕内容、同一时刻在不同的直播间最终的验证字段是不一样的,具体的,所述直播间的房间号通过向所述弹幕服务器发送获取房间信息的协议来获取;

ts是所述弹幕协议的时间戳,可以从弹幕协议中获取,其中,对于同一个弹幕内容,同一个用户,同一个直播房间,将弹幕协议的时间加入到验证字段中,可以保障不同时刻的最终的验证字段是不一样的;

no是所述弹幕的发送次数,可以理解的是,弹幕的发送次数,是指成功发送弹幕的次数,每成功发送一个弹幕,no加1。具体的,当弹幕发送成功后,弹幕的发送次数可以根据弹幕服务器返回的弹幕发送成功消息计算得到,初始值为0,每接收到一个弹幕服务器返回的弹幕发送成功消息,客户端设备的弹幕计算值no则会加1,相应的,弹幕服务器也有记录弹幕的发送次数,当弹幕发送成功后,弹幕服务器的弹幕计算值no也会加1。

另外,由于客户端设备和弹幕服务器的时间没办法完全保障一致,因此通常的做法则是对客户端设备上报的发送弹幕的时间戳进行一定范围的兼容处理,只要弹幕协议的时间戳与弹幕服务器的时间戳的差值在预置范围内,都认为是合法的,因此,对于非法刷弹幕来说,可以利用这一点,在一段时间内,使用同样的弹幕协议的时间戳,来绕过不同时刻的校验,加入弹幕的发送次数,可以避免使用同样的弹幕协议的时间戳,从而绕过了不同时刻的校验的情况;

content是所述弹幕内容,即所述弹幕协议准备发送的弹幕内容,可以从弹幕协议中获取。

n_r是对所述随机字段r进行neon加密算法的结果。

s308、客户端设备对所述k字段进行加密;

为了进一步的对k字段进行保护,本实施例采取对k字段再进行一次加密,从而进一步的提高数据传输的安全性,和被破解的门槛。对于直播平台来说,总的弹幕量是巨大的,而同一时刻弹幕服务器接收到的弹幕量也是巨大的,如果采用复杂的加密验证算法,最终会导致弹幕服务器的性能瓶颈,从而给弹幕服务器造成比较大的计算压力。因此,可以采用轻量级的加密算法来对数据进行加密解密计算。本实施例中,采用tea加密算法来对最终的k字段进行进一步的加密,并不用于限定本申请,在一些可能的实现方式中,也可以选用其他的加密方式。另外,为了保障加密的结果每次发生变化,本实施例采用r,作为加密算法tea的key值。

具体的,encryptk=tea.encrypt(r,ts);

其中tea.encrypt是加密算法tea的加密接口;

r是所述随机字段r;

ts是所述弹幕协议的时间戳;

encryptk是所述k字段的加密结果。

s309、客户端设备在所述弹幕协议中加入加密后的k字段,并向所述弹幕服务器发送加入加密后的k字段的弹幕协议;

具体的,步骤s309可以分为s309a与s309b:

s309a、客户端在所述弹幕协议中加入加密后的k字段;

考虑到对现有弹幕协议及客户端不同版本的兼容的功能,本实施例不需要修改现有的弹幕协议,而是将k字段通过增加一个字段的方式加入到现有的弹幕协议中。

s309b、客户端设备向所述弹幕服务器发送加入加密后的k字段的弹幕协议;

相应的,弹幕服务器接收客户端设备发送的弹幕协议,所述弹幕协议包含加密后的k字段;

s310、弹幕服务器判断所述弹幕协议的时间戳与所述弹幕服务器的时间戳的差值是否在预置范围内,若是,对所述加密后的k字段进行解密,从而得到k字段;

为了防止刷弹幕的非法份子绕过检查策略,而使用固定的弹幕协议时间戳,本实施例会对当前弹幕协议中的时间戳进行校验,弹幕服务器会获取弹幕服务器的时间戳,判断该弹幕服务器的时间戳与客户端设备的弹幕协议的时间戳的差值是否在预置范围内,如果是,则说明客户端设备的时间戳信息合法,否则不合法。优选的,预置范围可以是5分钟。若差值在预置范围内,对所述加密后的k字段进行解密,从而得到原始的k字段。

具体的,可以通过以下公式对所述加密后的k字段进行解密:

k=tea.decrypt(r,encryptk);

其中,tea.decrypt是tea的加密算法的解密接口;

r是所述随机字段r;

encryptk是所述加密后的k字段。

可以理解的是,弹幕服务器的解密算法与客户端的加密算法是相对应的。

s311、弹幕服务器在配置文件中查找n_r字段;

所述n_r字段是根据neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到,所述配置文件为所述随机字段r和所述n_r字段的对应关系。

具体的,对于弹幕服务器来说,弹幕服务器是不需要使用neon指令来计算的,弹幕服务器可以使用客户端设备来生成配置文件,通过客户端设备不断生成大量的随机数据,然后调用客户端设备编写的neon加密算法,从而得到随机数据的neon加密运算结果,再将随机数据和加密运算结果生成配置文件存储于弹幕服务器中。

配置文件的表格配置如下:

r:“123baddabbccdeab45987687343256”:n_r:

“bcabda1234d98766345609da1c3e47aa”

其中r是随机字段r,n_r是对随机字段r进行neon加密算法的结果。

弹幕服务器对比解密的r字段是否和配置的n_r一致,如果不一致则说明非法。弹幕服务器可以从配置文件中选择随机数据下发给客户端设备,确保加密结果可以在配置文件中找到。

同时为了防止黑客通过穷举法得到弹幕服务器所有的配置,弹幕服务器可以定时的更换整个配置内容,通过重新生成一份配置来进行下发。

s312、弹幕服务器根据所述token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及所述n_r字段计算k字段;

弹幕服务器会使用与客户端一样的方法来计算原始的k字段信息。客户端设备计算k字段是使用了token+roomid+ts+no+content+n_r一起计算其md5结果,而弹幕服务器也采用同样的方法进行计算k字段。其中,token是由弹幕服务器下发给客户端的,所以弹幕服务器存储着客户端设备的token值。弹幕服务器在客户端设备登录时记录了客户端设备的直播间的房间号,所以弹幕服务器存有客户端设备的直播间的房间号roomid。弹幕服务器也会记录客户端设备发送的弹幕次数,从而弹幕服务器也具有和客户端同样的发送弹幕的次数no。content是客户端发送的弹幕内容,弹幕服务器可以从客户端发送的弹幕协议中获取到。同样的,弹幕协议的时间戳ts也可以从弹幕协议中获取。n_r字段可以在配置文件中查找。从而计算k字段的所有字段弹幕服务器都具备,则可以使用同样的md5算法来计算原始的k字段。

k=md5.create(token+roomid+ts+no+content+n_r);

其中,md5.create是hash算法md5的计算接口;

token是所述token字段;

roomid是所述直播间的房间号;

ts是所述弹幕协议的时间戳;

no是所述弹幕的发送次数;

content是所述弹幕内容。

n_r是对所述随机字段r进行neon加密算法的结果。

s313、判断解密得到的k字段与计算得到的k字段是否一致,若是,则验证通过,并向所述客户端设备发送下一个随机字段r。

步骤s313又可以分为s313a和s313b,分别如下:

s313a、判断解密得到的k字段与计算得到的k字段是否一致,若是,则验证通过;

计算完k字段后,弹幕服务器会对比弹幕服务器计算的k字段和从客户端上报的k字段是否一致,即解密得到的k字段与计算得到的k字段是否一致,如果不一致则说明该弹幕协议是非法的,否则认为该弹幕协议是合法的,验证通过。

通过同样的md5计算,从而间接的对客户端的token,房间号,时间戳,弹幕发送次数、弹幕内容以及字段n_r进行校验,只有客户端和弹幕服务器都一致才会最终得到同样的k字段。

s313b、弹幕服务器向所述客户端设备发送下一个随机字段r。

相应的,若弹幕发送成功,客户端设备接收弹幕服务器发送的下一个随机字段r,下一个随机字段r用于计算下一个弹幕协议的k字段,从而往复循环。其中,弹幕服务器可以在回复给客户端设备的发送弹幕协议中携带此随机字段r,该协议同时也用于通知客户端设备弹幕发送成功的消息。可以理解的是,上文已对随机字段r的生成,以及k字段的计算和验证作了详细的描述,后续每个随机字段r的生成以及每个k字段的计算和验证过程类似,此处不再赘述。

还需要说明的是,当直播平台进行一些大事赛事活动时,其弹幕量会是平时弹幕量的多倍,考虑到弹幕服务器的性能压力,可以依据实际情况灵活地选择是否进行验证,或者采用抽检的方式进行验证,由于本实施例不改动现有弹幕协议,而是增加一个验证字段,那么弹幕服务器不对验证字段进行验证则不会增加任何计算量。从而弹幕服务器可以轻松的兼容原始的弹幕协议及增加验证的弹幕协议。

本申请实施例中,客户端设备通过neon指令设计基本的运算单元并根据所述基本的运算单元设计neon加密算法;发送登录协议到直播平台的弹幕服务器;弹幕服务器对登录协议进行验证,验证通过,则登录成功,所述弹幕服务器向客户端返回token字段、随机字段r以及公钥pkey字段;客户端设备生成弹幕协议;客户端设备根据所述neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到n_r字段;客户端设备根据所述token字段、直播间的房间号、弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及n_r字段计算k字段,并对所述k字段进行加密;在所述弹幕协议中加入加密后的k字段,并向所述弹幕服务器发送加入加密后的k字段的弹幕协议;弹幕服务器接收到弹幕协议后,先判断所述弹幕协议的时间戳与所述弹幕服务器的时间戳的差值是否在预置范围内,若是,对所述加密后的k字段进行解密,从而得到k字段;再在配置文件中查找n_r字段,所述n_r字段是根据neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到,所述配置文件为所述随机字段r和所述n_r字段的对应关系;然后根据token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及n_r字段计算k字段;判断解密得到的k字段与弹幕服务器自行计算得到的k字段是否一致,若是,则验证通过,可以在直播间播放该弹幕内容,并向所述客户端设备发送下一个随机字段r,客户端设备可以根据下一个随机字段r计算下一个弹幕协议的k字段。可见,本申请实施例可以通过登录协议的验证来及时发现非法用户,以及通过验证k字段来识别非法弹幕协议,丰富了处理刷弹幕的方式。

另外,由于neon指令则只能运行于arm芯片上,而目前移动端上使用的处理器正是arm芯片,因此基于此指令设计的加密算法只能运行于移动设备上,从而可以阻挡黑客通过服务器来计算正确的发送弹幕验证数据。进一步的,弹幕服务器随机字段r的下发,也增强了弹幕服务器对于客户端设备生成k字段的控制,客户端每一次生成k字段,都必须依赖弹幕服务器返回的随机字段r。

基于同一发明构思,本申请提供了一种计算机可读存储介质,详见图4,下面将结合图4对实施例四进行介绍。

实施例四:

本实施例提供了一种计算机可读存储介质400,所述计算机可读存储介质400存储有计算机程序411,所述计算机程序411被处理器执行时实现以下步骤:

通过neon指令设计基本的运算单元;

根据所述基本的运算单元设计neon加密算法;

发送登录协议到直播平台的弹幕服务器;

若登录成功,接收所述弹幕服务器返回的token字段、随机字段r以及公钥pkey字段;

生成弹幕协议,所述弹幕协议包括弹幕内容和弹幕协议的时间戳;

根据所述neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到n_r字段;

根据所述token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、所述弹幕内容以及所述n_r字段计算k字段,其中,所述直播间的房间号通过向所述弹幕服务器发送获取房间信息的协议来获取,所述弹幕的发送次数为弹幕发送成功的次数,根据所述弹幕服务器返回的弹幕发送成功消息计算得到,初始值为0;

对所述k字段进行加密;

在所述弹幕协议中加入加密后的k字段,并向所述弹幕服务器发送加入加密后的k字段的弹幕协议;

若弹幕发送成功,则接收所述弹幕服务器发送的下一个随机字段r,所述下一个随机字段r用于计算下一个弹幕协议的k字段。

在具体实施过程中,该计算机程序411被处理器执行时,可以实现上述实施例中由客户端设备执行的所有步骤,此处不再赘述。

基于同一发明构思,本申请还提供了一种计算机设备,详见图5,下面将结合图5对实施例五进行介绍。

实施例五:

本申请提供了一种计算机设备500,包括处理器520、存储器510以及存储在存储器510上并可在处理器520上运行的计算机程序511,所述处理器520执行所述计算机程序511时实现以下步骤:

通过neon指令设计基本的运算单元;

根据所述基本的运算单元设计neon加密算法;

发送登录协议到直播平台的弹幕服务器;

若登录成功,接收所述弹幕服务器返回的token字段、随机字段r以及公钥pkey字段;

生成弹幕协议,所述弹幕协议包括弹幕内容和弹幕协议的时间戳;

根据所述neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到n_r字段;

根据所述token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、所述弹幕内容以及所述n_r字段计算k字段,其中,所述直播间的房间号通过向所述弹幕服务器发送获取房间信息的协议来获取,所述弹幕的发送次数为弹幕发送成功的次数,根据所述弹幕服务器返回的弹幕发送成功消息计算得到,初始值为0;

对所述k字段进行加密;

在所述弹幕协议中加入加密后的k字段,并向所述弹幕服务器发送加入加密后的k字段的弹幕协议;

若弹幕发送成功,则接收所述弹幕服务器发送的下一个随机字段r,所述下一个随机字段r用于计算下一个弹幕协议的k字段。

在具体实施过程中,计算机设备500包括但不限于客户端设备,该计算机设备500可以实现上述实施例中由客户端设备执行的所有步骤,此处不再赘述。

基于同一发明构思,本申请提供了一种计算机可读存储介质,详见图6,下面将结合图6对实施例六进行介绍。

实施例六:

本实施例提供了一种计算机可读存储介质600,所述计算机可读存储介质600存储有计算机程序611,所述计算机程序611被处理器执行时实现以下步骤:

接收客户端设备发送的登录协议;

若登录成功,向所述客户端设备返回token字段、随机字段r以及公钥pkey字段;

接收所述客户端设备发送的弹幕协议,所述弹幕协议包含加密后的k字段;

判断所述弹幕协议的时间戳与所述弹幕服务器的时间戳的差值是否在预置范围内,若是,对所述加密后的k字段进行解密,从而得到k字段;

在配置文件中查找n_r字段,所述n_r字段是根据neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到,所述配置文件为所述随机字段r和所述n_r字段的对应关系;

根据所述token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及所述n_r字段计算k字段;

判断解密得到的k字段与计算得到的k字段是否一致,若是,则验证通过,并向所述客户端设备发送下一个随机字段r。

5.根据权利要求4所述的方法,其特征在于,所述根据所述token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及所述n_r字段计算k字段包括根据以下公式计算k字段:

k=md5.create(token+roomid+ts+no+content+n_r);

其中,md5.create是hash算法md5的计算接口;

token是所述token字段;

roomid是所述直播间的房间号;

ts是所述弹幕协议的时间戳;

no是所述弹幕的发送次数;

content是所述弹幕内容;

n_r是对所述随机字段r进行neon加密算法的结果。

在具体实施过程中,该计算机程序611被处理器执行时,可以实现上述实施例中由弹幕服务器执行的所有步骤,此处不再赘述。

基于同一发明构思,本申请还提供了一种计算机设备,详见图7,下面将结合图7对实施例七进行介绍。

实施例七:

本申请提供了一种计算机设备700,包括处理器720、存储器710以及存储在存储器710上并可在处理器720上运行的计算机程序711,所述处理器720执行所述计算机程序711时实现以下步骤:

接收客户端设备发送的登录协议;

若登录成功,向所述客户端设备返回token字段、随机字段r以及公钥pkey字段;

接收所述客户端设备发送的弹幕协议,所述弹幕协议包含加密后的k字段;

判断所述弹幕协议的时间戳与所述弹幕服务器的时间戳的差值是否在预置范围内,若是,对所述加密后的k字段进行解密,从而得到k字段;

在配置文件中查找n_r字段,所述n_r字段是根据neon加密算法和所述公钥pkey字段对所述随机字段r进行加密后得到,所述配置文件为所述随机字段r和所述n_r字段的对应关系;

根据所述token字段、直播间的房间号、所述弹幕协议的时间戳、弹幕的发送次数、弹幕内容以及所述n_r字段计算k字段;

判断解密得到的k字段与计算得到的k字段是否一致,若是,则验证通过,并向所述客户端设备发送下一个随机字段r。

在具体实施过程中,计算机设备700包括但不限于弹幕服务器,该计算机设备700可以实现上述实施例中由弹幕服务器执行的所有步骤,此处不再赘述。

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

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