一种视频流地址鉴权方法、存储介质、设备及系统与流程

文档序号:14993713发布日期:2018-07-20 23:06阅读:259来源:国知局

本发明涉及信息处理技术领域,具体来讲是一种视频流地址鉴权方法、存储介质、设备及系统。



背景技术:

视频直播是指利用互联网及流媒体技术进行直播;用户要想观看任何直播首先需要从直播平台获取视频流的观看地址。然而,由于视频流地址鉴权的算法现有方案大多采用统一的算法,使得移动端、web端、pc端都可以使用统一的算法来进行鉴权,这就使得视频流地址的鉴权算法容易在web端或pc端被破解,从而很容易被黑客逆向分析获取到如何计算视频流地址的鉴权方法,进而可以直接来请求视频流地址进行观看,即绕过了直播平台的视频播放器提供的视频播放。这就直接导致直播平台减少了网站的流量,从而影响正常的直播平台运营,甚至还会带来一系列商业经济损失。



技术实现要素:

本发明的目的是为了克服上述背景技术的不足,提供一种视频流地址鉴权方法、存储介质、设备及系统,使得本发明设计的鉴权数据加密算法只能运行于移动设备上才能正确计算出视频流地址的鉴权加密数据,从而有效阻挡黑客通过pc客户端或pc服务器来破解鉴权算法,防止黑客盗取视频流地址观看直播。

为达到以上目的,本发明采取的技术方案是:提供一种视频流地址鉴权方法,该方法包括以下步骤:

在每个客户端中利用neon指令中的逻辑运算指令,设置用于构造鉴权数据加密算法的基本运算操作;

在每个客户端中利用随机选择的基本运算操作构造出相同的鉴权数据加密算法;

当客户端登录直播平台服务器并请求观看某个房间视频时,直播平台服务器向客户端下发鉴权原始数据;客户端则使用构造出的鉴权数据加密算法对所述鉴权原始数据进行加密计算,得到鉴权加密数据后上报至直播平台服务器;

直播平台服务器对客户端上报的鉴权加密数据进行校验,若校验通过,则下发相应视频流地址给客户端。

在上述技术方案的基础上,客户端将鉴权加密数据上报至直播平台服务器时,还将客户端登录时获得的令牌token、客户端的当前时间、客户端的设备唯一id、客户端的当前ip地址以及客户端请求的房间号,一同上报至直播平台服务器;直播平台服务器对客户端上报的鉴权加密数据进行校验的同时,还会对客户端登录时获得的令牌token、客户端的当前时间、客户端的设备唯一id、客户端的当前ip地址以及客户端请求的房间号进行校验,若上述校验均通过,则下发相应视频流地址给客户端。

在上述技术方案的基础上,直播平台服务器向客户端下发鉴权原始数据时,针对每一个房间下发不同的鉴权原始数据;直播平台服务器对客户端上报的鉴权加密数据进行校验时,是将该客户端上报的鉴权加密数据与其他请求相同房间的客户端上报的鉴权加密数据进行比对,如果一致,则判定校验通过,下发相应视频流地址给该客户端。

本发明还提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述视频流地址鉴权方法的步骤。

本发明还提供一种视频流地址鉴权设备,包括存储器、处理器及存储在存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述视频流地址鉴权方法的步骤。

本发明还提供一种视频流地址鉴权系统,该系统包括设置于客户端的基本运算操作设置单元、鉴权数据加密算法构造单元、鉴权加密数据计算单元;以及设置于直播平台服务器的鉴权原始数据下发单元、鉴权加密数据校验单元;

所述基本运算操作设置单元用于:利用neon指令中的逻辑运算指令,设置用于构造鉴权数据加密算法的基本运算操作;

所述鉴权数据加密算法构造单元用于:利用随机选择的基本运算操作构造出鉴权数据加密算法,且构造出的鉴权数据加密算法与其他客户端构造出的鉴权数据加密算法相同;

所述鉴权加密数据计算单元用于:使用构造出的鉴权数据加密算法对直播平台服务器下发的鉴权原始数据进行加密计算,得到鉴权加密数据后上报至直播平台服务器;

所述鉴权原始数据下发单元用于:当客户端登录直播平台服务器并请求观看某个房间视频时,向客户端下发鉴权原始数据;

所述鉴权加密数据校验单元用于:对客户端上报的鉴权加密数据进行校验,若校验通过,则下发相应视频流地址给客户端。

在上述技术方案的基础上,所述鉴权加密数据计算单元进行加密计算得到鉴权加密数据并上报至直播平台服务器的具体流程为:所述鉴权加密数据计算单元收到直播平台服务器下发的鉴权原始数据后,使用所述鉴权数据加密算法构造单元构造出的鉴权数据加密算法对鉴权原始数据进行加密;再对加密后的数据进行hash值的计算,得到鉴权加密数据;将得到鉴权加密数据经再次加密后上报至直播平台服务器。

在上述技术方案的基础上,所述鉴权加密数据校验单元对鉴权加密数据进行校验的具体流程为:直播平台服务器将客户端上报的鉴权加密数据与其他客户端上报的鉴权加密数据进行比对,如果一致,则判定校验通过,向该客户端下发相应视频流地址。

在上述技术方案的基础上,所述鉴权原始数据下发单元向客户端下发鉴权原始数据时,会针对每一个房间下发不同的鉴权原始数据;所述鉴权加密数据校验单元对客户端上报的鉴权加密数据进行校验时,是将该客户端上报的鉴权加密数据与其他请求相同房间的客户端上报的鉴权加密数据进行比对,如果一致,则判定校验通过,向该客户端下发相应视频流地址。

在上述技术方案的基础上,所述鉴权加密数据计算单元将鉴权加密数据上报至直播平台服务器时,还会将客户端登录时获得的令牌token、客户端的当前时间、客户端的设备唯一id、客户端的当前ip地址以及客户端请求的房间号,一同上报至直播平台服务器;所述鉴权加密数据校验单元对客户端上报的鉴权加密数据进行校验的同时,还会对客户端登录时获得的令牌token、客户端的当前时间、客户端的设备唯一id、客户端的当前ip地址以及客户端请求的房间号进行校验,若上述校验均通过,则下发相应视频流地址给客户端。

本发明的有益效果在于:

(1)本发明创造性地将neon指令用于设计视频流地址的鉴权算法中,使得鉴权加密数据的加密计算过程是使用基于neon指令的加密算法来实现的,并且该加密过程仅能在移动端的设备上执行(neon指令只有arm的cpu才具有);从而可以阻挡黑客通过pc客户端或者pc服务器来破解鉴权数据加密算法、伪造鉴权加密数据,进而有效防止黑客盗取视频流地址进行直播观看。使得直播平台能有效避免网站流量的减少,保障正常的直播平台运营,避免产生商业经济损失。

(2)本发明中,在校验鉴权加密数据的同时,还增设有对客户端token、客户端时间、客户端id、客户端ip地址以及客户端请求的房间号的校验操作,能从一定程度上进一步提高视频流地址鉴权的可靠性,有效防止黑客盗取视频流地址观看直播。

(3)本发明中,为了增加该视频流地址鉴权方案的复杂度,设计了针对每一个房间下发不同的鉴权原始数据的操作,从而使得每个房间对应的鉴权加密数据的值是不一样的,从而进一步的增加了算法的复杂度,使得鉴权数据加密算法被破解的门槛提高,安全性更高。

附图说明

图1为本发明实施例中视频流地址鉴权方法的流程图;

图2为本发明实施例中视频流地址鉴权设备的结构示意图;

图3为本发明实施例中视频流地址鉴权系统的结构框图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步的详细描述。

本发明的设计思路是提供一种更好的实现视频流地址鉴权的方案,使得设计的视频流地址鉴权算法只能运行于移动端的设备上才能正确计算出视频流地址的鉴权加密数据,从而有效阻挡黑客通过pc客户端或pc服务器来破解鉴权算法,防止黑客盗取视频流地址观看直播。

目前,在移动端上使用最多的处理器是arm芯片。arm芯片cpu的指令集和pc端的x86指令集是不一样的;并且,arm芯片针对于移动端的多媒体和视频编解码、2d、3d的图像运算专门设计了一种并行快速的运算指令集neon指令集。neon指令集是专门针对大规模并行运算而设计,是一种单指令多数据引擎。本发明则创造性的将neon指令用于设计视频流地址的鉴权算法中,使得鉴权数据的加密过程是使用基于neon指令的加密算法来实现的,并且该加密过程仅能在移动端的设备上执行(neon指令只有arm的cpu才具有);从而可以阻挡黑客通过pc客户端或者pc服务器来破解鉴权算法、伪造鉴权数据,进而有效防止黑客盗取视频流地址进行直播观看。

基于上述设计思路,参见图1所示,本发明实施例提供一种视频流地址鉴权方法,该方法包括以下步骤:

步骤s1、基本运算操作的设置:在每个客户端中利用neon指令中的逻辑运算指令设置用于构造鉴权数据加密算法的基本运算操作,所述基本运算操作包括加法运算操作、减法运算操作、乘法运算操作、左移运算操作、右移运算操作、异或运算操作。

可以理解的是,neon指令中的逻辑运算指令包括:加法指令vadd、减法指令vsub、乘法指令vmul、左移指令vshl、右移指令vshr、按位异或指令veor等。一个基本的加密算法都是由一个个简单的逻辑算术运算所组成,所以可以通过neon指令提供的基本的运算来构造一些基本的加密算法的基础运算操作。并且,结合neon指令的单指令多数据流的特性,每个基本的加解密算法都可以并行的对多个数据同时操作,从而运算速度极快。

实际操作中,在每个客户端中利用neon指令中的逻辑运算指令设置用于构造鉴权数据加密算法的基本运算操作的步骤包括:

1、设置加法运算操作,使得加法运算操作在执行加法运算时按照以下方式进行:将需要相加的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用neon指令中的加法指令vadd将两个转换成指定位数的向量进行相加。

具体来说,指定位数的向量为8位的向量、16位的向量、32位的向量或64位的向量。以转换成8位的向量为例,所设置的加法运算操作对应的函数代码可如下:

其中,pdata和padd为两个数组形式的原始数据,数据类型为uint8_t*类型;ndatalen为原始数据的长度,数据类型为uint32_t类型。for循环体中的“uint8x8_tsrcdata=vld1_u8(pdata)”用于实现将数组形式的原始数据pdata转换成一个8位的向量srcdata,向量srcdata的每个元素的数据类型为uint8_t类型;for循环体中的“uint8x8_tadddata=vld1_u8(padd)”用于实现将数组形式的原始数据padd转换成一个8位的向量adddata,向量adddata的每个元素的数据类型为uint8_t类型;for循环体中的“uint8x8_tresult=vadd_u8(srcdata,adddata)”用于实现将向量srcdata和向量adddata通过neon指令中的加法指令vadd进行相加操作。

经过上述操作可以看出,利用设置好的加法运算操作执行加法运算时,每次都是同时对n个(n为8个、16个、32个或64个)数值相加,相当于一次性的加了n个数,从而达到了单指令多数据流操作的并行运算目的,运算速度上至少快了n倍。

2、设置减法运算操作,使得减法运算操作在执行减法运算时按照以下方式进行:将需要相减的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用neon指令中的减法指令vsub将两个转换成指定位数的向量进行相减。

还是以转换成8位的向量为例,所设置的减法运算操作对应的函数代码可如下:

其中,pdata和psub为两个数组形式的原始数据,数据类型为uint8_t*类型;ndatalen为原始数据的长度,数据类型为uint32_t类型。for循环体中的“uint8x8_tsrcdata=vld1_u8(pdata)”用于实现将数组形式的原始数据pdata转换成一个8位的向量srcdata,向量srcdata的每个元素的数据类型为uint8_t类型;for循环体中的“uint8x8_tsubdata=vld1_u8(psub)”用于实现将数组形式的原始数据psub转换成一个8位的向量subdata,向量subdata的每个元素的数据类型为uint8_t类型;for循环体中的“uint8x8_tresult=vsub_u8(srcdata,subdata)”用于实现将向量srcdata和向量subdata通过neon指令中的减法指令vsub进行相减操作。

经过上述操作可以看出,利用设置好的减法运算操作执行减法运算时,每次都是同时对n个(n为8个、16个、32个或64个)数值相减,相当于一次性的减了n个数,从而达到了单指令多数据流操作的并行运算目的,运算速度上至少快了n倍。

3、设置乘法运算操作,使得乘法运算操作在执行乘法运算时按照以下方式进行:将需要相乘的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用neon指令中的乘法指令vmul将两个转换成指定位数的向量进行相乘。

还是以转换成8位的向量为例,所设置的乘法运算操作对应的函数代码可如下:

mulencode(uint8_t*pdata,uint8_t*pmul,uint32_tndatalen)

{

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

{

uint8x8_tsrcdata=vld1_u8(pdata);

uint8x8_tmuldata=vld1_u8(pmul);

uint8x8_tresult=vmul_u8(srcdata,muldata);

}

}

其中,pdata和pmul为两个数组形式的原始数据,数据类型为uint8_t*类型;ndatalen为原始数据的长度,数据类型为uint32_t类型。for循环体中的“uint8x8_tsrcdata=vld1_u8(pdata)”用于实现将数组形式的原始数据pdata转换成一个8位的向量srcdata,向量srcdata的每个元素的数据类型为uint8_t类型;for循环体中的“uint8x8_tmuldata=vld1_u8(pmul)”用于实现将数组形式的原始数据pmul转换成一个8位的向量muldata,向量muldata的每个元素的数据类型为uint8_t类型;for循环体中的“uint8x8_tresult=vmul_u8(srcdata,muldata)”用于实现将向量srcdata和向量muldata通过neon指令中的乘法指令vmul进行相乘操作。

经过上述操作可以看出,利用设置好的乘法运算操作执行乘法运算时,每次都是同时对n个(n为8个、16个、32个或64个)数值相减,相当于一次性的减了n个数,从而达到了单指令多数据流操作的并行运算目的,运算速度上至少快了n倍。

4、设置左移运算操作,使得左移运算操作在执行左移运算时按照以下方式进行:将需要左移的数据以及左移位数的数据以数组形式保存;分别将两个数组形式的数据转换成指定位数的向量;利用neon指令中的左移指令vshl,将需要左移的数据所对应的向量按照左移位数的数据所对应的向量进行左移操作。

还是以转换成8位的向量为例,所设置的左移运算操作对应的函数代码可如下:

其中,pdata为数组形式的需要左移的数据,数据类型为uint8_t*类型;pleft为数组形式的左移位数的数据,数据类型也为uint8_t*类型。for循环体中的“uint8x8_tsrcdata=vld1_u8(pdata)”用于实现将数组形式的需要左移的数据pdata转换成一个8位的向量srcdata,向量srcdata的每个元素的数据类型为uint8_t类型;for循环体中的“uint8x8_tleftdata=vld1_u8(pleft)”用于实现将数组形式的左移位数的数据pleft转换成一个8位的向量leftdata,向量leftdata的每个元素的数据类型为uint8_t类型;for循环体中的“uint8x8_tresult=vshl_u8(srcdata,leftdata)”用于实现利用neon指令中的左移指令vshl,将需要左移的数据所对应的向量按照左移位数的数据所对应的向量进行左移操作。

经过上述操作可以看出,利用设置好的左移运算操作执行左移运算时,每次都是同时对n个(n为8个、16个、32个或64个)数值进行左移,相当于一次性的左移了n个数,从而达到了单指令多数据流操作的并行运算目的,运算速度上至少快了n倍。

5、设置右移运算操作,使得右移运算操作在执行右移运算时按照以下方式进行:将需要右移的数据以及右移位数的数据以数组形式保存;分别将两个数组形式的数据转换成指定位数的向量;利用neon指令中的右移指令vshr,将需要右移的数据所对应的向量按照右移位数的数据所对应的向量进行右移操作。

还是以转换成8位的向量为例,所设置的右移运算操作对应的函数代码可如下:

其中,pdata为数组形式的需要右移的数据,数据类型为uint8_t*类型;pright为数组形式的右移位数的数据,数据类型也为uint8_t*类型。for循环体中的“uint8x8_tsrcdata=vld1_u8(pdata)”用于实现将数组形式的需要右移的数据pdata转换成一个8位的向量srcdata,向量srcdata的每个元素的数据类型为uint8_t类型;for循环体中的“uint8x8_trightdata=vld1_u8(pright)”用于实现将数组形式的右移位数的数据pright转换成一个8位的向量rightdata,向量rightdata的每个元素的数据类型为uint8_t类型;for循环体中的“uint8x8_tresult=vshr_u8(srcdata,rightdata)”用于实现利用neon指令中的左移指令vshr,将需要右移的数据所对应的向量按照右移位数的数据所对应的向量进行右移操作。

经过上述操作可以看出,利用设置好的右移运算操作执行右移运算时,每次都是对n个(n为8个、16个、32个或64个)数值进行右移,相当于同时一次性的右移了n个数,从而达到了单指令多数据流操作的并行运算目的,运算速度上至少快了n倍。

6、设置异或运算操作,使得异或运算操作在执行异或运算时按照以下方式进行:将需要异或的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用neon指令中的按位异或指令veor将两个转换成指定位数的向量进行异或。

还是以转换成8位的向量为例,所设置的异或运算操作对应的函数代码可如下:

其中,pdata和peor为两个数组形式的原始数据,数据类型为uint8_t*类型;ndatalen为原始数据的长度,数据类型为uint32_t类型。for循环体中的“uint8x8_tsrcdata=vld1_u8(pdata)”用于实现将数组形式的原始数据pdata转换成一个8位的向量srcdata,向量srcdata的每个元素的数据类型为uint8_t类型;for循环体中的“uint8x8_teordata=vld1_u8(peor)”用于实现将数组形式的原始数据peor转换成一个8位的向量eordata,向量eordata的每个元素的数据类型为uint8_t类型;for循环体中的“uint8x8_tresult=veor_u8(srcdata,eordata)”用于实现将向量srcdata和向量eordata通过neon指令中的按位异或指令veor进行异或操作。

经过上述操作可以看出,利用设置好的异或运算操作执行异或运算时,每次都是同时对n个(n为8个、16个、32个或64个)数值进行一一异或,相当于并行进行了n次异或,从而达到了单指令多数据流操作的并行运算目的,运算速度上至少快了n倍。

步骤s2、鉴权数据加密算法的构造:在每个客户端中利用随机选择的基本运算操作构造出相同的鉴权数据加密算法。

可以理解的是,由于在每个客户端中都是利用随机选择的相同的基本运算操作来构造鉴权数据加密算法的,因此每个客户端中构造出的鉴权数据加密算法是相同的,例如,随机选择的基本运算操作为加法操作,则每个客户端均是利用加法操作来构造鉴权数据加密算法。另外,可以理解的是,有了用于构造鉴权数据加密算法的基本运算操作,并且这些基本运算操作都是使用的neon指令来操作,那么构造的鉴权数据加密算法最终也会是基于neon指令的。举例来说,在每个客户端中利用随机选择的基本算术运算操作构造出相同的鉴权数据加密算法的过程为:

假设每个客户端登录到直播平台服务器时,会从直播平台服务器获取到两个原始数据:pdata和pkey。其中,pdata=“firstpagetesthit1234566....”,为一串很长的字符串;pkey=“abcdef1234567899......”,也是一长串的字符串。那么,在每个客户端中利用随机选择的基本运算操作来构成相同的鉴权数据加密算法时,可选择相同的加法运算操作构成鉴权数据加密算法,即选择函数addencode(pdata,pkey,ndatalen)来作为鉴权数据加密算法,此时鉴权数据加密算法则实现的是对两个原始数据pdata和pkey进行相加操作来加密。同样的,还可以随机选择左移运算操作、异或运算操作、右移运算操作等来构造鉴权数据加密算法。

进一步的,可以理解的是,上述步骤s2中随机选择的基本运算操作可以为单个基本运算操作,也可以为多个基本运算操作。当随机选择多个基本运算操作进行叠加构成鉴权数据加密算法时,能够进一步提高鉴权数据加密算法被破解的门槛,从而更有效的避免鉴权数据加密算法被恶意破解。

举例来说,当随机选择多个基本运算操作进行叠加构成鉴权数据加密算法时,所选择的多个基本运算操作为:先对两个原始数据进行加法运算操作,然后进行左移运算操作,再进行减法操作。则相应构成的鉴权数据加密算法的函数代码为:

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

{

addencode(pdata,pkey,ndatalen);

leftencode(pdata,pkey,ndatalen);

subencode(pdata,pkey,ndatalen);

}

步骤s3、鉴权加密数据的计算:当客户端(任意客户端)登录直播平台服务器并请求观看某个房间视频(即请求获取某个房间的视频流地址)时,直播平台服务器向其下发鉴权原始数据;客户端则使用步骤s2中构造出的鉴权数据加密算法对鉴权原始数据进行加密计算,得到鉴权加密数据后上报至直播平台服务器。

可以理解的是,在一种实施方式中,步骤s3具体包括以下操作:

s301、当客户端登录直播平台服务器并请求观看某个房间视频时,直播平台服务器向其下发鉴权原始数据,该鉴权原始数据包括一段字符串数据,如pdata;和一段key值,如pkey,也为字符串数据。

s302、客户端收到鉴权原始数据后,使用步骤s2中构造出的鉴权数据加密算法对鉴权原始数据进行加密,如使用鉴权数据加密算法encode(pdata,pdatalen,pkey),从而将鉴权原始数据使用了基于neon指令设计的鉴权数据加密算法进行加密。

s303、客户端对加密后的数据进行hash(哈希)值的计算,从而得到鉴权加密数据。本实施例中,使用md5算法来进行hash值的计算,如代码pdatamd5=md5.create(pdata’,pdatalen),其中pdatamd5即为得到的鉴权加密数据。实际应用中,所使用的计算hash值的算法可根据实际需要进行自行选择,此处不做限定。

s304、客户端将得到鉴权加密数据(如pdatamd5)经再次加密后上报至直播平台服务器。本实施例中,使用对称加密算法des来对鉴权加密数据进行再次加密后上报至直播平台服务器;实际应用中,所使用的再次加密算法可根据实际需要进行自行选择,此处不做限定。

步骤s4、鉴权加密数据的校验:直播平台服务器对客户端上报的鉴权加密数据进行校验,若校验通过,则下发相应视频流地址给客户端。

可以理解的是,在一种实施方式中,步骤s4具体包括以下操作:

s401、直播平台服务器收到客户端加密上报的鉴权加密数据后,会对该数据进行解密,得到客户端经加密计算得到的鉴权加密数据。

s402、直播平台服务器将该鉴权加密数据与其他客户端上报的鉴权加密数据进行比对,如果一致,则校验通过,转入步骤s403;否则,校验不通过,转入步骤s404。可以理解的是,由于直播平台服务器下发的鉴权原始数据(如pdata和pkey)是固定的,且每个客户端中构造出的鉴权数据加密算法也是相同的,那么所有的客户端计算的结果则应该是一致的(除非该客户端是异常客户端),因此服务器则可以将客户端上报的鉴权加密数据与其他客户端上报的鉴权加密数据进行比对,如果一致则说明客户端上报的数据是正确的,否则是异常的。当然,实际应用中,直播平台服务器也可以通过一台正常的设备运行鉴权数据加密算法后,上报的鉴权加密数据作为基准,然后对其他客户端上报的鉴权加密数据进行对比,如果一致则说明客户端上报的数据是正确的,否则是异常的。

s403、直播平台服务器向该客户端下发相应视频流地址。

s404、直播平台服务器不向该客户端下发任何视频流地址。

可以理解的是,在另一种实施方式中,步骤s304中,客户端将得到鉴权加密数据(如pdatamd5)经再次加密后上报至直播平台服务器时,会将得到鉴权加密数据(如pdatamd5)与客户端登录时获得的token(令牌)、客户端的当前时间、客户端的设备唯一id、客户端的当前ip地址以及客户端请求的房间号,一起经过加密后再发送到直播平台服务器。例如,可一起经过对称加密算法des加密后发送到直播平台服务器,对应的加密过程函数代码可为:

desresult=des.encrypt(pdatamd5+time+ip+deviceid+token+roomid,key);其中,

pdatamd5则是客户端得到的鉴权加密数据;

time则是客户端的当前时间;

ip则是客户端的当前ip地址;

deviceid则是客户端的设备唯一id;

token则是客户端登录时获得的服务器下发的token;

roomid则是客户端当前请求观看的房间号;

key则是直播平台服务器下发的鉴权原始数据中的key值,如pkey。

在此基础上,步骤s4中,直播平台服务器对客户端上报的鉴权加密数据进行校验的同时,还会对客户端登录时获得的token、客户端的当前时间、客户端的设备唯一id、客户端的当前ip地址以及客户端请求的房间号进行校验(校验上报的token是否是正确的此客户端的token、校验客户端的ip地址是否正确、校验客户端的当前时间是否和服务器的时间在一个范围内、校验客户端请求的房间号是否正确等),若上述校验均通过,则下发相应视频流地址给客户端;否则,不下发任何视频流地址。该实施方式中,在校验鉴权加密数据的同时,还增设有对客户端token、客户端时间、客户端id、客户端ip地址以及客户端请求的房间号的校验操作,能从一定程度上进一步提高视频流地址鉴权的可靠性,从而有效防止黑客盗取视频流地址观看直播。

进一步地,为了增加该视频流地址鉴权方法的复杂度,在一种实施方式中,可考虑针对每一个房间下发不同的鉴权原始数据(pdata和pkey),从而使得每个房间对应的鉴权加密数据(pdatamd5)的值是不一样的,从而进一步的增加了算法的复杂度。具体来说,步骤s3中,直播平台服务器向客户端下发鉴权原始数据时,会针对每一个房间下发不同的鉴权原始数据,即请求相同房间的客户端所收到的鉴权原始数据会是相同的,而请求不同房间的客户端所收到的鉴权原始数据会是不同的。在此基础上,步骤s402中,直播平台服务器是将客户端上报的鉴权加密数据与其他请求了相同房间的客户端上报的鉴权加密数据进行比对,如果一致,则校验通过,转入步骤s403;否则,校验不通过,转入步骤s404。

对应上述的视频流地址鉴权方法,本发明实施例还提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可实现上述各实施例中的视频流地址鉴权方法的步骤。需要说明的是,所述存储介质包括u盘、移动硬盘、rom(read-onlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、磁碟或者光盘等各种可以存储程序代码的介质。

另外,参见图2所示,对应上述的视频流地址鉴权方法,本发明实施例还提供一种视频流地址鉴权设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时可实现上述各实施例中的视频流地址鉴权方法的步骤。

参见图3所示,本发明实施例还提供一种视频流地址鉴权系统,该系统包括设置于客户端的基本运算操作设置单元、鉴权数据加密算法构造单元、鉴权加密数据计算单元;以及设置于直播平台服务器的鉴权原始数据下发单元、鉴权加密数据校验单元。

其中,基本运算操作设置单元用于:利用neon指令中的逻辑运算指令,设置用于构造鉴权数据加密算法的基本运算操作;鉴权数据加密算法构造单元用于:利用随机选择的基本运算操作构造出鉴权数据加密算法,且构造出的鉴权数据加密算法与其他客户端构造出的鉴权数据加密算法相同;鉴权加密数据计算单元用于:使用构造出的鉴权数据加密算法对直播平台服务器下发的鉴权原始数据进行加密计算,得到鉴权加密数据后上报至直播平台服务器;鉴权原始数据下发单元用于:当客户端登录直播平台服务器并请求观看某个房间视频时,向客户端下发鉴权原始数据;鉴权加密数据校验单元用于:对客户端上报的鉴权加密数据进行校验,若校验通过,则下发相应视频流地址给客户端。

具体来说,在一种实施方式中,所述鉴权加密数据计算单元进行加密计算得到鉴权加密数据并上报至直播平台服务器的具体流程为:鉴权加密数据计算单元收到直播平台服务器下发的鉴权原始数据后,使用所述鉴权数据加密算法构造单元构造出的鉴权数据加密算法对鉴权原始数据进行加密;再对加密后的数据进行hash值的计算,得到鉴权加密数据;将得到鉴权加密数据经再次加密后上报至直播平台服务器。所述鉴权加密数据校验单元对鉴权加密数据进行校验的具体流程为:直播平台服务器将客户端上报的鉴权加密数据与其他客户端上报的鉴权加密数据进行比对,如果一致,则判定校验通过,向该客户端下发相应视频流地址。

进一步地,在另一种实施方式中,所述鉴权原始数据下发单元向客户端下发鉴权原始数据时,会针对每一个房间下发不同的鉴权原始数据;所述鉴权加密数据校验单元对客户端上报的鉴权加密数据进行校验时,是将该客户端上报的鉴权加密数据与其他请求相同房间的客户端上报的鉴权加密数据进行比对,如果一致,则判定校验通过,向该客户端下发相应视频流地址。

更进一步地,为了在校验鉴权加密数据的同时,还能增设对其他客户端信息的校验操作,从而进一步提高视频流地址鉴权的可靠性,进而有效防止黑客盗取视频流地址观看直播。在一种实施方式中,所述鉴权加密数据计算单元将鉴权加密数据上报至直播平台服务器时,还会将客户端登录时获得的令牌token、客户端的当前时间、客户端的设备唯一id、客户端的当前ip地址以及客户端请求的房间号,一同上报至直播平台服务器。在此基础上,所述鉴权加密数据校验单元对客户端上报的鉴权加密数据进行校验的同时,还会对客户端登录时获得的令牌token、客户端的当前时间、客户端的设备唯一id、客户端的当前ip地址以及客户端请求的房间号进行校验,若上述校验均通过,则下发相应视频流地址给客户端。

需要说明的是:上述实施例提供的系统在实现视频流地址鉴权时,仅以上述各功能模块的划分进行举例说明,实际应用中,可根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。

本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

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