一种媒体文件加解密方法和装置
技术领域
本发明的实施方式涉及媒体文件加解密技术领域,更具体地,本发明的实施方式涉及一种媒体文件加解密方法和装置。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在媒体文件传输领域,客户端向服务器请求传输媒体文件时,为了保护源媒体文件的版权,服务器端通常需要对传输的媒体文件进行加密,客户端接收到服务器传输的媒体文件后先解密再进行播放。
目前,已经出现一些针对媒体文件的加密方法,主要包括以下几种:
完全加密算法,完全加密算法中将视频数据当作普通的二进制数据进行加密,不考虑视频的编码格式,如VEA(Video Encryption Algorithm,视频加密算法)和CSC(混沌加密算法)等。
部分加密算法,即选择文件中重要的部分进行加密,常用的加密算法包括分层加密算法和基于帧结构的加密算法等。部分加密算法仅对媒体文件中的重要部分加密。
和编码相关的加密算法,例如有DCT系数加密算法,熵编码过程加密算法等。
发明内容
但是,上述的各种加密算法中,在加密过程中需修改媒体文件格式,或者改变了源媒体文件大小,或者改变了其中的视频数据、音频数据的大小,使得加密后的媒体文件与源媒体文件中的关键帧位置偏移发生变化,如果不进行相应的处理将导致客户端无法进行视频拖动等操作。
因此在现有技术中,为了支持视频拖动等操作,需要对关键帧位置偏移进行重新确定,而对于客户端来说,需要根据服务器端重新确定的关键帧位置对加密媒体文件进行处理,以正确识别媒体文件中的视频数据和音频数据,增加了客户端处理资源的开销,另一方面,由于客户端解密流程更加复杂,降低了客户端播放媒体文件的速度;另外,对于部分视频业务来说,例如流媒体点播业务,由于改变了媒体文件结构,使得内容分发网络(CDN)无法准确定位媒体文件中的各组成部分,从而无法进行媒体文件分发。
为此,非常需要一种改进的媒体文件加密方法,使加密后的媒体文件适用于内容分发网络分发,并降低客户端处理资源的开销,提高客户端播放媒体文件的速度。
在本上下文中,本发明的实施方式期望提供一种媒体文件加解密方法和装置。
在本发明实施方式的第一方面中,提供了一种媒体文件加密方法,包括:
根据待加密媒体文件的文件格式,确定所述待加密媒体文件中的音频或视频数据内容段的起始位置;
利用流式加密算法对所述待加密媒体文件中、从所述起始位置开始的所述数据内容段进行加密。
在本发明实施方式的第二方面中,提供了一种媒体文件解密方法,包括:
根据接收到的加密媒体文件的文件格式,确定所述加密媒体文件中的音频或者视频数据内容段的起始位置;
利用所述加密媒体文件使用的流式加密算法所对应的解密算法和/或用于校验密钥的密钥校验算法对所述加密媒体文件中、从所述起始位置开始的所述数据内容段进行解密。
在本发明实施方式的第三方面中,提供了一种媒体文件加密装置,包括:
确定单元,用于根据待加密媒体文件的文件格式,确定所述待加密媒体文件中的音频或者视频数据内容段的起始位置;
加密单元,用于利用流式加密算法对所述待加密媒体文件中、从所述起始位置开始的所述数据内容段进行加密。
在本发明实施方式的第四方面中,提供了一种媒体文件解密装置,包括:
第一确定单元,用于根据接收到的加密媒体文件中的文件格式,确定所述加密媒体文件中的音频或者视频数据内容段的起始位置;
解密单元,用于利用所述加密媒体文件使用的流式加密算法所对应的解密算法、和/或用于校验密钥的密钥校验算法对所述加密媒体文件中、从所述起始位置开始的所述数据内容段进行解密。
在本发明实施方式的第五方面中,提供了一种媒体文件加密设备,包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,所述处理单元用于执行所述存储单元存储的程序代码,执行下列过程:根据待加密媒体文件的文件格式,确定所述待加密媒体文件中的音频或视频数据内容段的起始位置;利用流式加密算法对所述待加密媒体文件中、从所述起始位置开始的所述数据内容段进行加密。
在本发明实施方式的第六方面中,提供了一种程序产品,其包括程序代码,当所述程序产品被运行时,所述程序代码用于执行下列过程:根据待加密媒体文件的文件格式,确定所述待加密媒体文件中的音频或视频数据内容段的起始位置;利用流式加密算法对所述待加密媒体文件中、从所述起始位置开始的所述数据内容段进行加密。
在本发明实施方式的第七方面中,提供了一种媒体文件解密设备,包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,所述处理单元用于执行所述存储单元存储的程序代码,执行下列过程:根据接收到的加密媒体文件的文件格式,确定所述加密媒体文件中的音频或者视频数据内容段的起始位置;利用所述加密媒体文件使用的流式加密算法所对应的解密算法、和/或用于校验密钥的密钥校验算法对所述加密媒体文件中、从所述起始位置开始的所述数据内容段进行解密。
在本发明实施方式的第八方面中,提供了一种程序产品,其包括程序代码,当所述程序产品被运行时,所述程序代码用于执行下列过程:据接收到的加密媒体文件的文件格式,确定所述加密媒体文件中的音频或者视频数据内容段的起始位置;利用所述加密媒体文件使用的流式加密算法所对应的解密算法、和/或用于校验密钥的密钥校验算法对所述加密媒体文件中、从所述起始位置开始的所述数据内容段进行解密。
根据本发明实施方式的媒体文件加密方法和装置,通过定位媒体文件中的数据内容段的起始位置,并利用流式加密算法对媒体文件中的数据内容段进行加密,不对媒体文件中编码相关信息进行加密,使得无需修改媒体文件格式,且不会改变源媒体文件大小以及数据内容段的大小,由于加密后的媒体文件与源媒体文件中的关键帧位置偏移相同,无需重新确定加密后的媒体文件中的关键帧位置偏移,从而简化了媒体文件加密处理操作流程,节约了媒体文件加密所需的处理资源,提高了媒体文件加密速度。另一方面,由于加密后的媒体文件结构未发生变化,从而便于CDN网络的分发。
根据本发明实施方式的媒体文件解密方法和装置,由于加密后的媒体文件中的关键帧位置偏移与源文件相同,从而无需针对加密媒体文件中的关键帧位置偏移进行相应的处理,简化了解密媒体文件的操作处理流程,节约了解密媒体文件所需的处理资源,提高了解密端解密媒体文件的速度。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了根据本发明实施方式的应用场景示意图;
图2a示意性地示出了根据本发明一实施例的媒体文件加密方法的实施流程示意图;
图2b示意性地示出了根据本发明一实施例的确定媒体文件中数据内容段的数据类型的实施例流程图;
图3示意性地示出了根据本发明又一实施例的FLV文件格式示意图;
图4a示意性地示出了根据本发明再一实施例的媒体文件解密方法的实施流程示意图;
图4b示意性地示出了根据本发明再一实施例的确定加密媒体文件中数据内容段的数据类型实施例流程图;
图5示意性地示出了根据本发明再一实施例的媒体文件加密装置的结构示意图;
图6示意性地示出了根据本发明再一实施例的媒体文件加密装置的结构示意图;
图7示意性地示出了根据本发明再一实施例的媒体文件解密装置的结构示意图;
图8示意性地示出了根据本发明再一实施例的媒体文件解密装置的结构示意图;
图9示意性地示出了根据本发明再一实施例的媒体文件加密程序产品示意图;
图10示意性地示出了根据本发明再一实施例的媒体文件解密程序产品示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种媒体文件加解密的方法和装置。
在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,现有的媒体文件加密方法由于改变了媒体文件结构或者媒体文件大小,这使得源媒体文件中的关键帧位置偏移发生变化,为了支持文件拖动等操作,加密端需要重新确定加密后的媒体文件中的关键帧位置偏移,这增加了加密端的加密媒体文件处理操作复杂度,浪费了加密端的处理资源,降低了媒体文件加密速度;相应的,在解密端,需要针对加密的媒体文件中关键帧位置偏移进行相应的处理,以准确识别媒体文件中的关键帧位置偏移,这增加了解密端的解密媒体文件的处理操作复杂度,一方面浪费了解密端的处理资源,另一方面,还会影响解密端解密媒体文件的速度。为了简化媒体文件加解密处理操作流程,提高媒体文件加解密速度,本发明实施例中,根据媒体文件的文件格式,定位媒体文件中包含的数据内容段的起始位置,并从确定出的起始位置开始仅对媒体文件中的数据内容段进行加解密,不对媒体文件中编码相关信息进行加密,并采用流式加密算法对数据内容段进行加密,从而使用本发明实施例提供的媒体文件加解密方法不会破坏媒体文件结构,加密端和解密端无需针对源媒体文件中的关键帧位置偏移进行相应处理,能够简化媒体文件加解密处理操作流程,节约媒体文件加解密处理资源,提高文件加解密速度。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1,用户终端11中安装有媒体文件播放客户端,用户通过用户终端11中安装的媒体文件播放客户端向媒体文件播放服务器12发送媒体文件获取请求,媒体文件播放服务器12对用户请求的媒体文件进行加密后发送给用户终端11,由用户终端11中安装的媒体文件播放客户端对接收到的加密媒体文件进行解密后播放。由此可知,本发明实施例中,媒体文件播放服务器12可以作为加密端实施本发明实施例提供的媒体文件加密方法,用户终端11可以作为解密端实施本发明实施例提供的媒体文件解密方法。
用户终端11和媒体文件播放服务器12通过网络连接,该网络可以为局域网、广域网、移动互联网等。用户终端11可以为便携设备(例如:手机、平板、笔记本电脑等),也可以为个人电脑(PC,Personal Computer),媒体文件播放服务器12可以为任何能够进行媒体文件处理的服务器设备。
示例性方法
下面结合图1的应用场景,参考图2~图4来描述根据本发明示例性实施方式的用于媒体文件加密和解密的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
如图2a所示,为本发明提供的媒体文件加密方法的实施例流程图,可以包括以下步骤:
S21、根据待加密媒体文件的文件格式,确定待加密媒体文件中的音频或视频数据内容段的起始位置。
其中,待加密媒体文件中可以包含多个音频数据内容段或者视频数据内容段。
S22、利用流式加密算法对所述待加密媒体文件中、从确定出的起始位置开始的数据内容段进行加密。
流式加密算法是用加密算法和密钥一起产生一个随机码流,再和数据流进行异或操作,产生加密后的数据流,可以保证加密前后的数据长度不会发生变化。流式加密算法按照字节进行加密,不改变源媒体文件的结构和音/视频数据大小。对于视频文件,流式加密算法不改变视频文件各个部分的位置,改变的只是相同位置的数值,这样方便视频的拖动操作。
具体实施时,待加密媒体文件中包含有指示数据内容段的数据类型的指示标识,基于此,如图2b所示,步骤S21中可以按照以下流程确定数据内容段的数据类型:
S211、根据待加密媒体文件中的数据类型指示标识,确定待加密媒体文件中数据内容段的数据类型。
其中,数据内容段的数据类型包括音频数据和视频数据。
S212、根据确定出的数据类型,确定数据内容段的起始位置。
根据步骤S211中确定出的数据内容段的数据类型,如果确定数据内容段的数据类型为音频数据时,则确定该数据内容段相应的音频编码信息段之后的位置为该数据内容段的起始位置。如果确定数据内容段的数据类型为视频数据时,则确定该数据内容段相应的视频编码信息段之后的位置为该数据内容段的起始位置。
在确定出音频数据内容段或者视频数据内容段的起始位置后,即可利用流式加密算法对音频数据内容段或者对视频数据内容段进行加密。
虽然不同格式的媒体文件结构不同,但其对媒体文件进行加密的原理是相同的。为了便于描述,本发明实施例中以FLV(Flash Video,流媒体)格式的媒体文件为例对本发明实施例提供的媒体文件加密方法的具体实施过程进行说明。应当理解,本发明实施例中以FLV文件为例对媒体文件加密方法的实施流程进行说明只是为了更好的理解本发明,其不构成对本发明的限定。
如图3所示,其为FLV格式媒体文件的结构示意图,FLV媒体文件由FLV Header(FLV头)和FLV Body(FLV文件体)组成,FLV Body包含若干个TAG(标签),Tag包括Tag Header(标签头)和Tag Data(标签数据)两部分。相邻的Tag之间是表示前一个Tag的长度的字段,用于分割Tag,其长度4个字节。FLV header之后的第一个长度字段是0。此外,在FLV Header之后还有一个Metadata Tag(元数据标签)。
FLV Header的长度为9bytes(字节)。前三个字节分别是0x46,0x4C和0x56,分别代表“F”,“L”,“V”三个字母的ASCII码,用于表征该媒体文件是FLV格式的封装。第4个字节为字段Version,用于标识FLV的版本号,一般为0x01。Tag header字段中头一个字节的后面五个bits(位)用于表示当前Tag的类型,剩余三个bits的最后一个bit是FLV官方加密方案中用来标识当前Tag是否被加密的标识,最后剩余的两个bits是保留位。Tag的数据类型包括音频Tag、视频Tag和Script data,其他类型值被保留。其中Script tag可能会存放视频长度,视频分别率,视频码率等信息,也可能存放ActionScript脚本数据等。Tag是否被加密的标识被称作Filter,如果为1说明当前Tag为加密Tag,如果为0,说明当前Tag为非加密Tag。
不同类型的Tag的Header结构是相同的,但是Data结构各不相同。Tag Data中包含编码信息段和数据内容段。由于解密端在解析接收到的媒体文件时,需要编码信息段的相关内容,如果加密端在加密媒体文件时对编码信息段一并加密,将增加解密端解析媒体文件的处理逻辑,因此,本发明实施例中,在对媒体文件进行加密时,可以跳过Tag Data中的编码信息段,仅对数据内容段进行加密。
具体的,FLV文件中在Tag Data的开始部分利用一些bits表示当前Tag Data的编码信息,即音频Tag开始的一些bits包含了音频数据的编码信息,视频Tag也用开始的一些bits包含视频数据的编码信息,例如,编码信息可以为AAC(Advanced Audio Coding,高级音频编码)或者AVC(Advanced Video Coding,高级视频编码)等,在其之后还会有一些bits用来针对某一个特定的音频/视频编码器表示具体的编码信息,之后才是音频数据流或者视频数据流等数据内容段。
基于图3分析的FLV文件格式,本发明实施例提供的媒体文件加密方法在需要对FLV文件加密时,通过定位Tag Data中的数据内容段,利用流式加密算法对Tag Data中的音频数据流或者视频数据流等数据内容段进行加密,对于Tag Data中的编码信息段不进行处理。
例如,对于音频Tag,如果根据编码信息段确定当前音频Tag的编码格式为AAC时,则跳过Tag Header之后的AACPacketType数据段,对之后的音频数据内容段进行加密。如果根据编码信息段确定当前音频Tag的编码格式为AVC时,则跳过Tag Header之后的AVCPacketType数据段,对之后的音频数据内容段进行加密。
对于视频Tag,如果根据编码信息段确定当前视频Tag的编码格式为VP6或者VP6A,则跳过Tag Header之后的VP6编码头信息数据段,对之后的视频数据内容段进行加密。
为了便于解密端解密,加密端还需要在FLV文件中指示当前Tag是否为加密Tag。具体的,本发明实施例中,可以利用Filter标识进行指示,例如,可以修改Filter标识为1,表明当前Tag为加密Tag即可。解密端根据Filter标识确定是否需要对接收到的FLV文件进行解密处理。
另外,加密端还需要通知解密端加密媒体文件所使用的流式加密算法和密钥校验算法。解密端在接收到加密媒体文件后,可以首先利用加密端通知的密钥校验算法对密钥进行校验,在对密钥的校验通过之后,解密端再利用加密端所使用的流式加密算法对应的解密算法和校验通过的密钥对媒体文件进行解密。其中,解密端可以在接收到加密媒体文件之后,向加密端请求加密媒体文件所使用的密钥;或者加密端可以与解密端预先协商使用的密钥,如果加密端与解密端协商的密钥包含多个时,则加密端可以在加密媒体文件中指示解密端其使用的密钥标识,加密端可以与解密端协商指示密钥标识的字段,具体实施时,该字段可以为FLV文件中的保留字段。
本发明实施例中,加密端可以利用Metadata Tag通知解密端加密媒体文件所使用的流式加密算法和解密时校验密钥所需使用的密钥校验算法。具体实施时,可以在Metadata Tag中设置加密媒体文件所使用的流式加密算法的描述信息的字段,或者在Metadata Tag中设置解密时校验密钥所需使用的密钥校验算法的描述信息的字段,还可以同时设置加密媒体文件所使用的流式加密算法的描述信息的字段和解密时校验密钥所需使用的密钥校验算法的描述信息的字段。如果Metadata Tag中仅设置流式加密算法的描述信息的字段或者仅设置解密时校验密钥所需使用的密钥校验算法的描述信息的字段时,加密端可以通过其它方式通知解密端使用的流式加密算法或者校验密钥所需的密钥校验算法,例如,可以利用FLV文件中的保留字段通知解密端使用的流式加密算法或者校验密钥所需的密钥校验算法等。加密端和解密端可以预先协商携带流式加密算法和密钥校验算法的字段。
具体实施时,加密端和解密端可以预先协商多种流式加密算法,加密端在对媒体文件加密时,可以随机使用其中任一种,并通过在Metadata Tag中使用自定义字段指示所使用的流式加密算法的标识,解密端根据该标识确定加密端所使用的流式加密算法,以增强数据加密的安全性。当然,加密端和解密端也可以预先协商多个密钥,用于对不同的媒体文件进行加密,加密端在对媒体文件加密时,可以随机使用其中任一密钥,并通过在Metadata Tag中使用自定义字段指示所使用密钥对应的密钥校验算法的标识,解密端根据该标识确定加密端所使用密钥对应的密钥校验算法,并利用确定出的密钥校验算法对密钥进行校验。
与上述的媒体文件加密方法相对应,本发明实施例还提供了一种媒体文件解密方法。
如图4a所示,为本发明实施例提供的媒体文件解密方法实施例流程图,可以包括以下步骤:
S41、根据接收到的加密媒体文件的文件格式,确定加密媒体文件中的音频或者视频数据内容段的起始位置。
其中,加密媒体文件中可以包含多个音频或者视频数据内容段。
S42、利用加密媒体文件使用的流式加密算法所对应的解密算法、和/或用于校验密钥的密钥校验算法对加密媒体文件中、从起始位置开始的数据内容段进行解密。
具体实施时,加密媒体文件中包含有指示数据内容段的数据类型的指示标识,基于此,如图4b所示,步骤S41中可以按照以下流程确定数据内容段的数据类型:
S411、根据加密媒体文件中的数据类型指示标识,确定加密媒体文件中数据内容段的数据类型。
其中,数据内容段的数据类型包括音频数据类型和视频数据类型。
S412、根据确定出的数据类型,确定数据内容段的起始位置。
根据步骤S411中确定出的数据内容段的数据类型,如果确定数据类型为音频数据类型时,确定该数据内容段相应的音频编码信息段之后的位置,为该数据内容段的起始位置;或者当该数据类型为视频数据类型时,确定数据内容段相应的视频编码信息段之后的位置,为该数据内容段的起始位置。
在确定出音频数据内容段或者视频数据内容段的起始位置后,再利用密钥校验算法对密钥进行校验,校验通过后,即可利用校验通过的密钥和加密端加密媒体文件所使用的流式加密算法所对应的解密算法对音频数据内容段或者对视频数据内容段进行加密。
为了更好的理解本发明实施例提供的文件解密方法,以下同样以FLV格式的媒体文件为例对本发明实施例提供给你的媒体文件解密方法的具体实施流程进行说明。
FLV媒体文件格式如图3所示,FLV文件中包括Tag,Tag中包含有Tag Header和TagData,Tag Header中设置有数据类型指示标识和是否加密标识Filter,Tag Data中包含编码信息段和数据内容段。FLV文件的具体格式可以参照上文描述,这里不再赘述。
解密端在接收到媒体文件后,可以读取Tag Header中的Filter的内容,根据读取的Filter的内容判断当前Tag是否为加密Tag。如果Filter设置为1,则说明当前Tag为加密Tag,如果Filter设置为0,则说明当前Tag为非加密Tag。如果确定当前Tag为加密Tag,则定位当前Tag中Tag Data中的数据内容段(可以包括音频数据内容段和视频数据内容段),对数据内容段进行解密。
在对加密FLV文件解密时,解密端首先需要确定用于校验加密端加密FLV文件时使用的密钥的密钥校验算法和/或加密该FLV文件所使用的流式加密算法。
较佳的,加密端可以利用Metadata Tag携带加密FLV文件时使用的流式加密算法的描述信息,和/或用于校验加密FLV文件所使用的密钥的密钥校验算法的描述信息。解密端在接收到加密的FLV文件后,读取Metadata Tag中设置的、加密该加密FLV文件所使用的流式加密算法的描述信息和用于校验密钥的密钥校验算法的描述信息,根据读取的流式加密算法的描述信息和密钥校验算法的描述信息,确定用于解密该加密FLV文件的解密算法和密钥校验算法。其中,解密端可以与加密端预先协商加密FLV文件所使用的密钥,也可以在需要解密FLV文件时,实时向加密端请求解密FLV文件所需的密钥,即,解密端可以在校验密钥之前实时向加密端获取密钥。
当然,具体实施时,加密端也可以利用其它保留字段携带加密该FLV文件所使用的流式加密算法的描述信息,利用Metadata Tag携带用于校验加密FLV文件时使用的密钥的密钥校验算法的描述信息;或者利用其它保留字段携带用于校验加密FLV文件时使用的密钥的密钥校验算法的描述信息,利用Metadata Tag携带加密该FLV文件所使用的流式加密算法的描述信息等等。这种情况下,解密端只需要在相应的位置读取密钥校验算法的描述信息或者流式加密算法的描述信息,并利用读取的描述信息分别确定用于校验密钥的密钥校验算法和流式加密算法对应的解密算法即可。
解密端在利用密钥校验算法对加密端提供的密钥校验通过之后,利用加密端所使用的流式加密算法对应的解密算法和密钥一起生成与加密端生成的随机码流相同的随机码流对FLV文件中加密音频数据流或者视频数据流进行解密。
本发明实施例提供的媒体文件加密和解密方法中,加密端在对FLV文件进行加密时,对于FLV文件中的FLV Header,Metadata Tag,Tag Header以及Tag Data中的编码信息段等内容不进行加密,而仅仅对Tag Data中的数据内容段(包括音频数据内容段和视频数据内容段)加密,保持源FLV文件格式不变,使得加密端无需重新确定关键帧位置偏移,简化了加密端的加密流程,节约了加密端的处理资源,提高了媒体文件的加密速度;相应的,在解密端也无需针对加密端重新确定的关键帧位置偏移进行相应的处理,简化了解密端的解密流程,提高了解密端解密的速度,节约了解密端的处理资源。另外,由于本发明实施例中,加密后的媒体文件格式不变,可以用于CDN网络的分发业务,例如流媒体点播业务中。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图5~图8对本发明示例性实施方式的、用于媒体文件加密和解密的装置进行介绍。
如图5所示,为本发明实施例中媒体文件加密装置实施例的结构示意图,可以包括:
确定单元51,用于根据待加密媒体文件的文件格式,确定所述待加密媒体文件中的音频或者视频数据内容段的起始位置。
加密单元52,用于利用流式加密算法对所述待加密媒体文件中、从所述起始位置开始的所述数据内容段进行加密。
较佳的,确定单元51,可以包括:
第一确定子单元511,还用于根据所述待加密媒体文件中的数据类型指示标识,确定所述待加密媒体文件中所述数据内容段的数据类型;
第二确定子单元512,用于根据第一确定子单元511确定出的数据类型,确定数据内容段的起始位置。
较佳的,第二确定子单元512,可以用于当第一确定子单元511确定所述数据内容段的数据类型为音频数据类型时,确定所述数据内容段相应的音频编码信息段之后的位置,为所述起始位置;或者当第一确定子单元511确定所述数据内容段的数据类型为视频数据类型时,确定所述数据内容段相应的视频编码信息段之后的位置,为所述起始位置。
具体实施时,所述待加密媒体文件中包含多个音频或者视频数据内容段。
较佳的,所述待加密媒体文件为流媒体格式FLV文件;所述FLV文件中包括标签Tag,所述Tag中包含有标签头Tag Header和标签数据Tag Data,所述Tag Header中设置有所述数据类型指示标识,所述Tag Data中包含编码信息段和数据内容段。
具体实施时,所述Tag Header中还设置有Filter标识;以及
所述媒体文件加密装置,还包括:
修改单元53,用于修改所述Tag Header中的Filter标识为指示所述Tag为加密Tag的标识。
较佳的,所述Tag中还包含元源数据标签Metadata Tag;以及
所述媒体文件加密装置,还包括:
设置单元54,用于在所述Metadata Tag中设置加密所述媒体文件所使用的流式加密算法的描述信息的字段和/或用于校验密钥的密钥校验算法的描述信息的字段。
在介绍了本发明用于媒体文件加密的示例性实施方式的方法和装置之后,接下来,介绍根据本发明的另一示例性实施方式的用于媒体文件加密的装置。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明的用于媒体文件加密的装置可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于媒体文件的加密方法中的步骤。例如,所述处理单元可以执行如图2a中所示的步骤S21、根据待加密媒体文件的文件格式,确定待加密媒体文件中的音频或视频数据内容段的起始位置,和步骤S22、利用流式加密算法对所述待加密媒体文件中、从确定出的起始位置开始的数据内容段进行加密。
下面参照图6来描述根据本发明的这种实施方式的用于媒体文件加密的装置60。图6所示的用于媒体文件加密的装置仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,用于媒体文件加密的装置60可以以通用计算设备的形式表现,例如其可以为服务器设备。用于媒体文件加密的装置60的组件可以包括但不限于:上述至少一个处理单元61、上述至少一个存储单元62、连接不同系统组件(包括存储单元62和处理单元61)的总线63。
总线63表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元62可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)621和/或高速缓存存储器622,还可以进一步包括只读存储器(ROM)623。
存储单元62还可以包括具有一组(至少一个)程序模块624的程序/实用工具625,这样的程序模块624包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
用于媒体文件加密的装置60也可以与一个或多个外部设备64(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与该用于媒体文件加密的装置60交互的设备通信,和/或与使得该用于媒体文件加密的装置60能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口65进行。并且,用于媒体文件加密的装置60还可以通过网络适配器66与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器66通过总线63与用于媒体文件加密的装置60的其它模块通信。应当理解,尽管图中未示出,可以结合用于媒体文件加密的装置60使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
如图7所示,为本发明实施例提供的媒体文件解密装置实施例的结构示意图,可以包括:
第一确定单元71,用于根据接收到的加密媒体文件中的文件格式,确定所述加密媒体文件中的音频或者视频数据内容段的起始位置。
解密单元72,用于利用所述加密媒体文件使用的流式加密算法所对应的解密算法、和/或用于校验密钥的密钥校验算法对所述加密媒体文件中、从所述起始位置开始的所述数据内容段进行解密。
其中,第一确定单元71,包括:
第一确定子单元711,用于根据所述加密媒体文件中的数据类型指示标识,确定所述加密媒体文件中所述数据内容段的数据类型;
第二确定子单元712,用于根据所述数据类型,确定所述数据内容段的起始位置。
所述第二确定子单元712,具体用于当所述数据类型为音频数据类型时,确定所述数据内容段相应的音频编码信息段之后的位置,为所述起始位置;或者当数据类型为视频数据类型时,确定所述数据内容段相应的视频编码信息段之后的位置,为所述起始位置。
具体实施时,所述加密媒体文件中包含多个音频或者视频数据内容段。
较佳的,所述加密媒体文件为流媒体格式FLV文件;所述FLV文件中包括标签Tag,所述Tag中包含有标签头Tag Header和标签数据Tag Data,所述Tag Header中设置有所述数据类型指示标识,所述Tag Data中包含编码信息段和数据内容段。
具体实施时,所述Tag Header中还设置有Filter标识;以及
所述媒体文件解密装置,还包括:
第一读取单元73,用于读取所述Tag Header中的Filter标识;
判断单元74,用于根据所述第一读取单元73读取的Filter标识判断所述Tag是否为加密Tag。
具体实施时,所述Tag中还包含元数据标签Metadata Tag;所述Metadata Tag中设置有所述加密媒体文件所使用的流式加密算法的描述信息的字段和/或用于校验密钥的密钥校验算法的描述信息的字段;以及
所述媒体文件解密装置,还包括:
第二读取单元75,用于读取所述Metadata Tag中设置的、加密所述加密媒体文件所使用的密钥流式加密算法的描述信息和/或用于校验密钥的所述密钥校验算法的描述信息;
第二确定单元76,用于根据所述流式加密算法的描述信息和/或用于校验密钥的密钥校验算法的描述信息,确定用于解密所述加密媒体文件的解密算法和/或密钥校验算法。
在介绍了本发明用于媒体文件解密的示例性实施方式的方法和装置之后,接下来,介绍根据本发明的另一示例性实施方式的用于媒体文件解密的装置。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明的用于媒体文件解密的装置可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于媒体文件的解密方法中的步骤。例如,所述处理单元可以执行如图4a中所示的步骤S41、根据接收到的加密媒体文件的文件格式,确定加密媒体文件中的音频或者视频数据内容段的起始位置,和步骤S42、利用加密媒体文件使用的流式加密算法所对应的解密算法、和/或用于校验密钥的密钥校验算法对加密媒体文件中、从起始位置开始的数据内容段进行解密。
下面参照图8来描述根据本发明的这种实施方式的用于媒体文件解密的装置80。图8所示的用于媒体文件解密的装置仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,用于媒体文件解密的装置80可以以通用计算设备的形式表现,例如其可以为服务器设备。用于媒体文件解密的装置80的组件可以包括但不限于:上述至少一个处理单元81、上述至少一个存储单元82、连接不同系统组件(包括存储单元82和处理单元81)的总线83。
总线83表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元82可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)821和/或高速缓存存储器822,还可以进一步包括只读存储器(ROM)823。
存储单元82还可以包括具有一组(至少一个)程序模块824的程序/实用工具825,这样的程序模块824包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
用于媒体文件解密的装置80也可以与一个或多个外部设备84(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与该用于媒体文件解密的装置80交互的设备通信,和/或与使得该用于媒体文件解密的装置80能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口85进行。并且,用于媒体文件解密的装置80还可以通过网络适配器86与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器86通过总线83与用于媒体文件解密的装置80的其它模块通信。应当理解,尽管图中未示出,可以结合用于媒体文件解密的装置80使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
示例性程序产品
在一些可能的实施方式中,本发明提供的文件加密方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在服务器设备上运行时,所述程序代码用于使所述服务器设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于数据库迁移的方法中的步骤,例如,所述服务器设备可以执行如图2a中所示的步骤S21、根据待加密媒体文件的文件格式,确定待加密媒体文件中的音频或视频数据内容段的起始位置,和步骤S22、利用流式加密算法对所述待加密媒体文件中、从确定出的起始位置开始的数据内容段进行加密。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图9所示,描述了根据本发明的实施方式的用于即时通信应用的程序产品90,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在服务器设备上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
在一些可能的实施方式中,本发明提供的文件解密方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在服务器设备上运行时,所述程序代码用于使所述服务器设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于数据库迁移的方法中的步骤,例如,所述服务器设备可以执行如图4a中所示的步骤S41、根据接收到的加密媒体文件的文件格式,确定加密媒体文件中的音频或者视频数据内容段的起始位置,和步骤S42、利用加密媒体文件使用的流式加密算法所对应的解密算法、和/或用于校验密钥的密钥校验算法对加密媒体文件中、从起始位置开始的数据内容段进行解密。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图10所示,描述了根据本发明的实施方式的用于即时通信应用的程序产品100,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在服务器设备上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。