一种文件解密方法、装置及客户端转让专利

申请号 : CN201810008055.5

文献号 : CN108229192B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周志刚陈少杰张文明

申请人 : 武汉斗鱼网络科技有限公司

摘要 :

本发明实施例公开了一种文件解密方法、装置及客户端。本发明实施例方法包括:客户端接收服务器下发的JS代码文件,客户端获取服务器下发的JS代码文件的顺序,得到第一序列,客户端根据自身客户端标识信息和第一序列的JS代码文件生成共享秘钥,客户端根据共享秘钥按照第一序列解密该JS代码文件。本发明实施例中通过共享秘钥按照第一序列对JS代码文件进行加密,有效保证JS代码文件的安全,避免了文件被篡改或攻击。

权利要求 :

1.一种文件解密方法,其特征在于,所述方法包括:

客户端接收服务器下发的JS代码文件,所述JS代码文件为所述服务器利用预先计算的共享秘钥加密后的文件;

所述客户端获取所述服务器下发的JS代码文件的顺序,得到第一序列;

所述客户端根据自身客户端标识信息和所述第一序列的JS代码文件生成共享秘钥;其中,所述客户端根据自身客户端标识信息和所述第一序列的JS代码文件生成共享秘钥,包括:所述客户端根据所述客户端标识信息计算得到配对的第一公钥和第一私钥;

所述客户端根据所述第一序列的JS代码文件生成第二公钥和第二私钥;

所述客户端根据所述第一公钥和所述第二私钥生成所述共享秘钥,或者,所述客户端根据所述第一私钥和所述第二公钥生成所述共享秘钥;

所述客户端根据所述共享秘钥按照第一序列解密所述JS代码文件。

2.根据权利要求1所述的方法,其特征在于,所述客户端根据所述客户端标识信息计算得到配对的第一公钥和第一私钥,包括:所述客户端使用预置的哈希算法计算所述客户端标识信息,得到所述客户端标识信息的第一哈希值,将所述第一哈希值作为所述第一私钥;

所述客户端使用预置的非对称加密算法计算所述第一私钥,得到与所述第一私钥配对的所述第一公钥。

3.根据权利要求1所述的方法,其特征在于,所述客户端根据所述第一序列的JS代码文件生成第二公钥和第二私钥,包括:所述客户端使用预置的哈希算法计算所述第一序列的JS代码文件,得到第二哈希值,将所述第二哈希值作为所述第二私钥;

所述客户端使用预置的非对称加密算法计算所述第二私钥,得到与所述第二私钥配对的所述第二公钥。

4.根据权利要求1所述的方法,其特征在于,所述客户端根据所述第一公钥和所述第二私钥生成所述共享秘钥,包括:所述客户端使用预置的非对称加密算法计算所述第一公钥和所述第二私钥,得到所述共享秘钥。

5.根据权利要求1所述的方法,所述客户端根据所述共享秘钥按照第一序列解密所述JS代码文件,包括:使用对称解密算法以所述共享秘钥为KEY值对所述第一序列中第一个JS代码进行解密;

使用所述对称解密算法对第一序列中其他JS代码文件依次进行解密,其中,对其他JS代码文件中每个JS代码文件,当前JS代码文件的哈希值为后一个JS代码文件解密的KEY值。

6.一种文件解密装置,其特征在于,应用于客户端,所述装置包括:接收模块,用于接收服务器下发的JS代码文件,所述JS代码文件为所述服务器利用预先计算的共享秘钥加密后的文件;

获取模块,用于获取所述服务器下发的JS代码文件的顺序,得到第一序列;

生成模块,用于根据自身客户端标识信息和所述第一序列的JS代码文件生成共享秘钥;其中,所述客户端根据自身客户端标识信息和所述第一序列的JS代码文件生成共享秘钥,包括:所述客户端根据所述客户端标识信息计算得到配对的第一公钥和第一私钥;

所述客户端根据所述第一序列的JS代码文件生成第二公钥和第二私钥;

所述客户端根据所述第一公钥和所述第二私钥生成所述共享秘钥,或者,所述客户端根据所述第一私钥和所述第二公钥生成所述共享秘钥;

解密模块,用于根据所述共享秘钥按照第一序列解密所述JS代码文件。

7.根据权利要求6所述的装置,其特征在于,所述生成模块具体用于:使用预置的哈希算法计算所述客户端标识信息,得到所述客户端标识信息的第一哈希值,将所述第一哈希值作为所述第一私钥;

使用预置的非对称加密算法计算所述第一私钥,得到与所述第一私钥配对的所述第一公钥。

8.一种客户端,其特征在于,包括:存储器,处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时可以实现权利要求1至5任一所述的方法。

说明书 :

一种文件解密方法、装置及客户端

技术领域

[0001] 本发明涉及文件加解密技术领域,特别涉及一种文件解密方法、装置及客户端。

背景技术

[0002] 目前,随着手机、平板电脑等移动终端及智能设备的普及,越来越多的移动应用也随之而起,然而使用移动终端原生语言来开发应用则会存在一些劣势。例如Android系统使用JAVA语言来开发应用,其更新迭代则比较缓慢。随着大前端,更多的移动应用会将进程变化的需求使用JS(JavaScript)语言来开发,从而具备了像WEB程序一样,及时实时的进行更新,极大的方便了应用的更新与迭代,实现了快速更新,实时上线等特性。
[0003] 随着JS代码的普及,由于JS代码是脚本语言,其源代码相当于是公开的,因此其极易被破解和篡改,通过篡改JS代码则可以实现一些非法的功能,例如通过篡改JS代码绕过客户端的逻辑检测,甚至可能产生跨站脚本攻击等等,因此需要一种方法来保障移动终端端加载或者执行的JS代码为服务器下发的正确的、没有被篡改过的JS代码。

发明内容

[0004] 本发明实施例提供了一种文件解密方法、装置及客户端,以避免现有JS代码文件容易被篡改或者易被跨站脚本攻击,而导致安全性低的问题。
[0005] 第一方面,本申请提供了一种文件解密方法,该方法包括:
[0006] 客户端接收服务器下发的JS代码文件,所述JS代码文件为所述服务器利用预先计算的共享秘钥加密后的文件;
[0007] 所述客户端获取所述服务器下发的JS代码文件的顺序,得到第一序列;
[0008] 所述客户端根据自身客户端标识信息和所述第一序列的JS代码文件生成共享秘钥;
[0009] 所述客户端根据所述共享秘钥按照第一序列解密所述JS代码文件。
[0010] 进一步的,所述客户端根据自身客户端标识信息和所述第一序列的JS代码文件生成共享秘钥,包括:
[0011] 所述客户端根据所述客户端标识信息计算得到配对的第一公钥和第一私钥;
[0012] 所述客户端根据所述第一序列的JS代码文件生成第二公钥和第二私钥;
[0013] 所述客户端根据所述第一公钥和所述第二私钥生成所述共享秘钥,或者,所述客户端根据所述第一私钥和所述第二公钥生成所述共享秘钥。
[0014] 进一步的,所述客户端根据所述客户端标识信息计算得到配对的第一公钥和第一私钥,包括:
[0015] 所述客户端使用预置的哈希算法计算所述客户端标识信息,得到所述客户端标识信息的第一哈希值,将所述第一哈希值作为所述第一私钥;
[0016] 所述客户端使用预置的非对称加密算法计算所述第一私钥,得到与所述第一私钥配对的所述第一公钥。
[0017] 进一步的,所述客户端根据所述第一序列的JS代码文件生成第二公钥和第二私钥,包括:
[0018] 所述客户端使用预置的哈希算法计算所述第一序列的JS代码文件,得到第二哈希值,将所述第二哈希值作为所述第二私钥;
[0019] 所述客户端使用预置的非对称加密算法计算所述第二私钥,得到与所述第二私钥配对的所述第二公钥。
[0020] 进一步的,所述客户端根据所述第一公钥和所述第二私钥生成所述共享秘钥,包括:
[0021] 所述客户端使用预置的非对称加密算法计算所述第一公钥和所述第二私钥,得到所述共享秘钥。
[0022] 进一步的,所述客户端根据所述共享秘钥按照第一序列解密所述JS代码文件,包括:
[0023] 使用对称解密算法以所述共享秘钥为KEY值对所述第一序列中第一个JS代码进行解密;
[0024] 使用对称解密算法对第一序列中其他JS代码文件依次进行解密,其中,对其他JS代码文件中每个JS代码文件,当前JS代码文件的哈希值为后一个JS代码文件解密的KEY值。
[0025] 第二方面,本申请提供一种文件解密装置,应用于客户端,该装置包括:
[0026] 接收模块,用于接收服务器下发的JS代码文件,所述JS代码文件为所述服务器利用预先计算的共享秘钥加密后的文件;
[0027] 获取模块,用于获取所述服务器下发的JS代码文件的顺序,得到第一序列;
[0028] 生成模块,用于根据自身客户端标识信息和所述第一序列的JS代码文件生成共享秘钥;
[0029] 解密模块,用于根据所述共享秘钥按照第一序列解密所述JS代码文件。
[0030] 进一步的,所述生成模块具体用于:
[0031] 根据所述客户端标识信息计算得到配对的第一公钥和第一私钥;
[0032] 根据所述第一序列的JS代码文件生成第二公钥和第二私钥;
[0033] 根据所述第一公钥和所述第二私钥生成所述共享秘钥,或者,所述客户端根据所述第一私钥和所述第二公钥生成所述共享秘钥。
[0034] 进一步的,所述生成模块具体用于:
[0035] 使用预置的哈希算法计算所述客户端标识信息,得到所述客户端标识信息的第一哈希值,将所述第一哈希值作为所述第一私钥;
[0036] 使用预置的非对称加密算法计算所述第一私钥,得到与所述第一私钥配对的所述第一公钥。
[0037] 进一步的,所述生成模块具体用于:
[0038] 使用预置的哈希算法计算所述第一序列的JS代码文件,得到第二哈希值,将所述第二哈希值作为所述第二私钥;
[0039] 使用预置的非对称加密算法计算所述第二私钥,得到与所述第二私钥配对的所述第二公钥。
[0040] 进一步的,所述生成模块具体用于:
[0041] 使用预置的非对称加密算法计算所述第一公钥和所述第二私钥,得到所述共享秘钥。
[0042] 进一步的,所述解密模块具体用于:
[0043] 使用对称解密算法以所述共享秘钥为KEY值对所述第一序列中第一个JS代码进行解密;
[0044] 使用所述对称解密算法对第一序列中其他JS代码文件依次进行解密,其中,对其他JS代码文件中每个JS代码文件,当前JS代码文件的哈希值为后一个JS代码文件解密的KEY值。
[0045] 第三方面,本发明还提供一种电子设备,包括:存储器,处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时可以实现第一方面中任一所述的方法。
[0046] 第四方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任一所述的方法。
[0047] 本发明实施例通过客户端接收服务器下发的JS代码文件,客户端获取服务器下发的JS代码文件的顺序,得到第一序列,客户端根据自身客户端标识信息和第一序列的JS代码文件生成共享秘钥,客户端根据共享秘钥按照第一序列解密该JS代码文件。本发明实施例中通过共享秘钥按照第一序列对JS代码文件进行加密,有效保证JS代码文件的安全,避免了文件被篡改或攻击。

附图说明

[0048] 图1是本发明实施例中文件加密方法的一个实施例示意图;
[0049] 图2是本发明实施例中步骤S103的一个实施例示意图;
[0050] 图3是本发明实施例中步骤S103的另一个实施例示意图;
[0051] 图4是本发明实施例中步骤S1031的一个实施例示意图;
[0052] 图5是本发明实施例中步骤S1032的一个实施例示意图;
[0053] 图6是本发明实施例文件加密装置的一个实施例示意图;
[0054] 图7是本发明实施例中服务器的一个实施例示意图;
[0055] 图8是本发明实施例中文件加密方法的一个实施例示意图;
[0056] 图9是本发明实施例中步骤S803的一个实施例示意图;
[0057] 图10是本发明实施例中步骤S803的另一个实施例示意图;
[0058] 图11是本发明实施例中步骤S8031的一个实施例示意图;
[0059] 图12是本发明实施例中步骤S8032的一个实施例示意图;
[0060] 图13是本发明实施例中步骤S804的一个实施例示意图;
[0061] 图14是本发明实施例文件解密装置的一个实施例示意图;
[0062] 图15是本发明实施例中客户端的一个实施例示意图。
[0063] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0064] 为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0065] 本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0066] 本发明实施例中文件加密方法应用于文件加密装置,该装置位于服务器中,请参阅图1,本发明实施例中文件加密方法一个实施例包括:
[0067] S101、服务器接收客户端的JS代码请求;
[0068] 其中,该JS代码请求中包括该客户端的客户端标识信息,进一步的,由于每个客户端都会有一个用户身份证明(User Identification,UID)信息,此UID则表明是那个用户,因此该客户端标识信息可以是该客户端对应的UID信息。当然在其他实施例中,该客户端标识信息也可以是其他可标记客户端的标记信息。需要说明的是,本发明实施例中客户端上搭载的系统需要时能够加载使用JS文件的系统,例如Android系统,以及其他可加载使用JS文件的系统,或者今后新出现的可加载使用JS文件的系统。
[0069] 另外,本发明实施例中服务器可以是直播平台对应的服务器,例如斗鱼直播对应的服务器,客户端可以是登录该直播平台的客户端,例如手机,平板电脑等。
[0070] 一般情况下,用户在客户端中直播平台界面进行操作时,即会生成相应的JS代码请求,例如点击直播平台界面中的网络地址,即生成了相应的JS代码请求,或者在直播平台与主播互动时,如赠送礼物时点击礼物加载的虚拟按钮,在需要加载礼物清单,即生成了相应的JS代码请求等,当然还可以是其他生成了JS代码请求的情况,此处不一一具体限定。
[0071] S102、服务器对待下发给客户端的JS代码文件分别进行随机排序,得到第一序列;
[0072] 具体的,服务器在接收到客户端发起的JS代码请求,即可以确定下发给客户端的JS代码文件,此时服务器可以待下发给客户端的JS代码文件分别进行随机排序,得到第一序列。例如,服务器现有3个JS代码文件需要下发到客户端进行执行,3个JS代码文件名称为:A.js B.js C.js,服务器则可以随机生成第一序列如下:B,A,C序列。本发明实施例中,服务器对相同JS代码请求的不同客户端,服务器可以随机生成不同的JS代码文件序列。
[0073] S103、服务器根据客户端标识信息和第一序列的JS代码文件生成共享秘钥;
[0074] S104、服务器根据第一序列得到第二序列;
[0075] 其中,第一序列和第二序列不同。以步骤S102中的例子为例,假设第一序列为B,A,C序列,则第二序列可以是,A,C,B序列。优选的,第二序列为第一序列的反向序列,C,A,B序列,这样可以进一步加大后续加密JS代码文件被破译的难度。
[0076] S105、服务器根据共享秘钥按照第二序列加密该JS代码文件。
[0077] 本发明实施例中服务器接收客户端的JS代码请求;服务器对待下发给客户端的JS代码文件分别进行随机排序,得到第一序列;服务器根据客户端标识信息和第一序列的JS代码文件生成共享秘钥;服务器根据第一序列得到第二序列;服务器根据共享秘钥按照第二序列加密JS代码文件。本发明实施例中通过共享秘钥按照预先得到的第二序列对JS代码文件进行加密,一旦任何一个文件被修改,即会导致所有JS代码文件都无法进行解密,有效保证JS代码文件的安全,避免了文件被篡改或攻击。
[0078] 在本发明一些实施例中,如图2所示,上述步骤S103具体可以包括:
[0079] S1031、服务器根据客户端标识信息计算得到配对的第一公钥和第一私钥;
[0080] S1032、服务器根据第一序列的JS代码文件生成第二公钥和第二私钥;
[0081] S1033、服务器根据第一公钥和第二私钥生成共享秘钥。
[0082] 在本发明另一些实施例中,如图3所示,上述步骤S1033还可以被如下步骤S1033’替代:
[0083] S1033’、服务器根据第一私钥和第二公钥生成共享秘钥。
[0084] 进一步的,如图4所示,上述步骤S1031具体可以包括:
[0085] S10311、服务器使用预置的哈希算法计算客户端标识信息,得到客户端标识信息的第一哈希值,将第一哈希值作为第一私钥;
[0086] 具体的,以客户端标识信息为客户端对应用户的UID信息、哈希算法为MD5为例,服务器使用预置的哈希算法计算客户端标识信息,得到客户端标识信息的第一哈希值,将第一哈希值作为第一私钥具体实现过程如下:
[0087] Md5Result=Md5.Create(UID);
[0088] 其中,Md5.Create则是MD5算法的接口,UID则是客户端对应用户的UID信息,Md5Result则是用户的UID的MD5值(即第一哈希值),Md5Result值作为该客户端的私钥Privatekey(即第一私钥)。
[0089] 需要说明的是,本发明实施例中所述哈希算法还可以除MD5外的其他类型的哈希算法,例如MD4,安全哈希算法(SHA-1)等,此处不做限定,当然,此处优选最新加密最安全的哈希算法。
[0090] S10312、服务器使用预置的非对称加密算法计算第一私钥,得到与第一私钥配对的第一公钥。
[0091] 具体的,以非对称加密算法非RSA算法为例,服务器使用预置的非对称加密算法计算第一私钥,得到与第一私钥配对的第一公钥的具体实现过程可以如下:
[0092] Publickey=RSA.CreatePair(Privatekey);
[0093] 其中,RSA.CreatePair则是RSA算法生成配对秘钥的接口,Publickey则是最终生成的配对的公钥信息,即第一公钥。
[0094] 此过程即实现利用上述步骤S10311中的Privatekey(即第一私钥),使用非对称加密算法RSA来生成配对的公钥Publickey(即第一公钥)。
[0095] 需要说明的是,本发明实施例中所述非对称加密算法还可以RSA外的其他算法,如Elgamal算法、背包算法、Rabin算法、D-H算法、ECC(椭圆曲线加密算法)等,此处不作限定,当然,此处优选最新加密最安全的非对称加密算法。
[0096] 进一步的,如图5所示,上述步骤S1032具体可以包括:
[0097] S10321、服务器使用预置的哈希算法计算第一序列的JS代码文件,得到第二哈希值,将第二哈希值作为第二私钥;
[0098] 具体的,同样以哈希算法为MD5为例,服务器使用预置的哈希算法计算第一序列的JS代码文件,得到第二哈希值,将第二哈希值作为第二私钥具体实现过程如下:
[0099] 在步骤S102中服务器会产生一个JS代码文件序列(即第一序列),那么此处可以使用该第一序列来生成一对公钥和私钥信息(即第二公钥和第二私钥),假设服务器对该客户端产生的序列是B.js,C.js,A.js。
[0100] Md5Result=Md5.Create(B.js+C.js+A.js);
[0101] 其中,此处的Md5Result为私钥jsPrivatekey,即第二私钥。
[0102] S10322、服务器使用预置的非对称加密算法计算第二私钥,得到与第二私钥配对的第二公钥。
[0103] 具体的,同样以非对称加密算法非RSA算法为例,服务器使用预置的非对称加密算法计算第二私钥,得到与第二私钥配对的第二公钥的具体实现过程包括:
[0104] jsPublickey=RSA.CreatePair(jsPrivatekey);
[0105] 其中,jsPublickey即为第二公钥,jsPrivatekey为上述步骤S10321中的第二私钥。
[0106] 通过本实施例中步骤即实现了服务器依据登录的每个客户端服务器给其生成的JS代码文件序列来生成第二公钥和第二私钥的过程。
[0107] 在本发明一些实施例中,上述步骤S1033具体可以包括:服务器使用预置的非对称加密算法计算第一公钥和第二私钥,得到共享秘钥。即服务器使用第一公钥Publickey和第二私钥jsPrivatekey来生成一个共享的秘钥,同样以非对称加密算法非RSA算法为例,具体实现过程如下:
[0108] KEY=RSA.CreateShareKey(Publickey,jsPrivatekey);
[0109] 其中,RSA.CreateShareKey则是根据RSA非对称加密算法生成的共享秘钥。
[0110] 需要说明的是,上述步骤S1033’的实现过程与步骤S1033的实现过程类似,差别仅在于骤S1033’中服务器使用第二公钥和第一私钥来生成一个共享的秘钥,因此此处不再赘述。
[0111] 进一步的,假设服务器待下发给客户端的JS代码文件为n个,n为正整数,n大于等于2,此时,上述步骤S105中服务器根据共享秘钥按照第二序列加密该JS代码文件的实现过程具体可以如下:使用对称加密算法对第二序列中前m-1个JS代码文件按顺序依次进行加密(其中,m≥2,对前m-1个JS代码文件中每个JS代码文件,当前JS代码文件加密的KEY值为后一个JS代码文件的哈希值);使用对称加密算法以共享秘钥(上述步骤S103中得到的公钥秘钥)为KEY值对第二序列中第m个JS代码文件进行加密。
[0112] 其中,对称加密算法可以是AES加密算法,哈希值对应的哈希算法可以是MD5,当然也可以是其他类型的对称加密算法和哈希算法,但需要保证前后统一,此处不单独作具体限定。另外需要说明的是,下面描述的对称加密算法KEY值为加密KEY值,在下面的举例中,“AKey”、“BKey”、共享秘钥“Key”均为对称加密算法不同取值的KEY值。
[0113] 下面以对称加密算法为AES加密算法、第二序列为第一序列的反序列为例进行举例介绍服务器根据共享秘钥按照第二序列加密该JS代码文件的详细过程,由于服务器生成了JS代码文件的一个序列(即第一序列),而在加密时则需要反序列(以第二序列为第一序列的反序列为例进行说明)进行加密。假设服务器给该客户端生成的JS代码文件序列是:B.js,C.js,A.js,
[0114] 那么此处的加密顺序则是A.js,C.js,B.js。
[0115] (1)首先对于A.js文件的加密,本实施例使用对称加密算法AES来加密JS文件,对于A.js文件加密具体如下:
[0116] 首先对C.js文件计算其Md5值得到一个Md5结果做为其加密算法使用的KEY值:CKey=Md5.Create(C.js),其中,C.js则是C.js的整个原始JS文件的代码内容,然后使用AES加密算法来加密A.js文件:
[0117] encryptA.js=AES.Encrypt(A.js,AKey);
[0118] 其中,AES.Encrypt则是AES的加密接口,参数A.js则是整个A.js的文件内容,AKey则是计算得到的MD5结果值。
[0119] 对于C.js文件的加密,本实施例同样使用对称加密算法AES来加密JS文件,对于C.js文件加密具体如下:
[0120] 首先对B.js文件计算其Md5值得到一个Md5结果做为其加密算法使用的KEY值,BKey=Md5.Create(B.js),其中,B.js则是B.js的整个原始JS文件的代码内容。然后使用AES来加密C.js文件:
[0121] encryptC.js=AES.Encrypt(C.js,BKey);
[0122] 其中,AES.Encrypt则是AES的加密接口。
[0123] 其中参数C.js则是整个C.js的文件内容,BKey则是计算得到的MD5结果。
[0124] 对于B.js文件的加密,本实施例使用对称加密算法AES来加密JS文件,对于B.js其是起始JS代码文件,其加密的KEY值则是使用上述步骤计算得到的共享密钥来进行加密,具体如下:
[0125] encryptB.js=AES.Encrypt(B.js,KEY)。
[0126] 本实施例中的加密方法使用生成的序列的反序列来进行加密,同时对序列中的前一个文件的加密使用后一个文件的明文的MD5结果来作为KEY来进行加密,而最后一个文件则使用共享的密钥来进行加密。本实施例的做法则使得每个文件的解密依赖于前一个文件,所有只有每个文件解密成功才能解密后续的文件,从而产生环环相扣的效果,保证了JS代码文件不被篡改,提升了文件安全性。
[0127] 下面介绍本发明实施例中文件加密装置的实施例。
[0128] 如图6所示,为本发明实施例中文件加密装置的一个实施例,该装置包括:
[0129] 接收模块601,用于接收客户端的JS代码请求,所述请求中包括所述客户端的客户端标识信息;
[0130] 排序模块602,用于对待下发给所述客户端的JS代码文件分别进行随机排序,得到第一序列;
[0131] 生成模块603,用于根据所述客户端标识信息和所述第一序列的JS代码文件生成共享秘钥;
[0132] 获取模块604,用于根据所述第一序列得到第二序列;
[0133] 加密模块605,用于根据所述共享秘钥按照所述第二序列加密所述JS代码文件。
[0134] 进一步的,所述生成模块603具体用于:
[0135] 根据所述客户端标识信息计算得到配对的第一公钥和第一私钥;
[0136] 根据所述第一序列的JS代码文件生成第二公钥和第二私钥;
[0137] 根据所述第一公钥和所述第二私钥生成所述共享秘钥,或者,根据所述第一私钥和所述第二公钥生成所述共享秘钥。
[0138] 进一步的,所述生成模块603具体用于:
[0139] 使用预置的哈希算法计算所述客户端标识信息,得到所述客户端标识信息的第一哈希值,将所述第一哈希值作为所述第一私钥;
[0140] 使用预置的非对称加密算法计算所述第一私钥,得到与所述第一私钥配对的所述第一公钥。
[0141] 进一步的,所述生成模块603具体用于:
[0142] 使用预置的哈希算法计算所述第一序列的JS代码文件,得到第二哈希值,将所述第二哈希值作为所述第二私钥;
[0143] 使用预置的非对称加密算法计算所述第二私钥,得到与所述第二私钥配对的所述第二公钥。
[0144] 进一步的,所述生成模块603具体用于:
[0145] 使用预置的非对称加密算法计算所述第一公钥和所述第二私钥,得到所述共享秘钥。
[0146] 所述加密模块具体用于:
[0147] 使用对称加密算法对所述第二序列中前m-1个JS代码文件按顺序依次进行加密,其中,m≥2,对前m-1个JS代码文件中每个JS代码文件,当前JS代码文件加密的KEY值为后一个JS代码文件的哈希值;
[0148] 使用所述对称加密算法以所述共享秘钥为KEY值对第二序列中第m个JS代码文件进行加密。
[0149] 本发明实施例中还提供一种服务器,请参见图7,所述服务器包括:
[0150] 存储器701,处理器702及存储在所述存储器上并可在所述处理器上运行的计算机程序703,其中,所述处理器702执行所述计算机程序703时可以实现上述文件加密方法。
[0151] 为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。存储器701可用于存储计算机程序703,上述计算机程序包括软件程序、模块和数据,处理器702通过运行执行存储在存储器701的计算机程序703,从而执行服务器的各种功能应用以及数据处理。
[0152] 在具体的实施过程中,存储器701可用于存储软件程序以及模块,处理器702通过运行存储在存储器701的软件程序以及模块,从而执行服务器的各种功能应用以及数据处理。存储器701可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(例如游戏类应用程序、聊天类应用程序)等;存储数据区可存储根据服务器的使用所创建的数据(游戏配置数据、音频数据)等。此外,存储器701可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。处理器702是服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器701内的软件程序和/或模块,以及调用存储在存储器701内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。可选的,处理器702可包括一个或多个处理单元;优选的,处理器702可集成应用处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等。
[0153] 本发明实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的文件加密方法的部分或全部步骤。
[0154] 下面介绍本发明实施例中文件解密方法的实施例,该文件解密方法应用于文件解密装置,该文件解密装置位于客户端,该客户端可以是手机,平板电脑等智能移动终端。
[0155] 请参阅图8,为本发明实施例中文件解密方法的一个实施例示意图,该方法包括:
[0156] S801、客户端接收服务器下发的JS代码文件;
[0157] 其中,所述JS代码文件为所述服务器利用预先计算的共享秘钥加密后的文件,本发明实施例中即上述文件加密方法中根据共享秘钥加密后的待下发给客户端的JS代码文件。
[0158] S802、客户端获取服务器下发的JS代码文件的顺序,得到第一序列;
[0159] 该第一序列,即为上述文件加密方法中JS代码文件加密的顺序,如B.js,C.js,A.js。
[0160] S803、客户端根据自身客户端标识信息和第一序列的JS代码文件生成共享秘钥;
[0161] S804、客户端根据该共享秘钥按照第一序列解密该JS代码文件。
[0162] 本发明实施例通过客户端接收服务器下发的JS代码文件,客户端获取服务器下发的JS代码文件的顺序,得到第一序列,客户端根据自身客户端标识信息和第一序列的JS代码文件生成共享秘钥,客户端根据共享秘钥按照第一序列解密该JS代码文件。本发明实施例中通过共享秘钥按照第一序列对JS代码文件进行加密,有效保证JS代码文件的安全,避免了文件被篡改或攻击。
[0163] 在本发明一些实施例中,如图9所示,上述步骤S803具体可以包括:
[0164] S8031、客户端根据客户端标识信息计算得到配对的第一公钥和第一私钥;
[0165] S8032、客户端根据第一序列的JS代码文件生成第二公钥和第二私钥;
[0166] S8033、客户端根据第一公钥和所述第二私钥生成该共享秘钥。
[0167] 在本发明另一些实施例中,如图10所示,上述步骤S8033还可以被如下步骤S8033’替代:
[0168] S8033’、客户端根据第一私钥和第二公钥生成该共享秘钥。
[0169] 进一步的,如图11所示,上述步骤S8031具体可以包括:
[0170] S80311、客户端使用预置的哈希算法计算客户端标识信息,得到客户端标识信息的第一哈希值,将第一哈希值作为第一私钥;
[0171] S80312、客户端使用预置的非对称加密算法计算第一私钥,得到与第一私钥配对的第一公钥。
[0172] 具体的,以客户端标识信息为客户端对应用户的UID信息、哈希算法为MD5为例,第一私钥和第一公钥的计算方式如下:
[0173] Md5Result=Md5.Create(UID);
[0174] Publickey=RSA.CreatePair(Privatekey);
[0175] 其中,UID为客户端标识信息,Md5Result为第一哈希值,Privatekey为第一私钥,Publickey为第一公钥。
[0176] 进一步的,如图12所示,上述步骤S8032具体可以包括:
[0177] S80321、客户端使用预置的哈希算法计算第一序列的JS代码文件,得到第二哈希值,将第二哈希值作为第二私钥;
[0178] S80322、客户端使用预置的非对称加密算法计算第二私钥,得到与第二私钥配对的第二公钥。
[0179] 具体的,同样以哈希算法为MD5为例,第二私钥和第二公钥的计算方式如下:
[0180] Md5Result=Md5.Create(B.js+C.js+A.js);
[0181] jsPublickey=RSA.CreatePair(jsPrivatekey);
[0182] 其中,B.js+C.js+A.js为第一序列的JS代码文件,Md5Result为第二哈希值,jsPrivatekey为第二私钥,jsPublickey为第二公钥。
[0183] 进一步的,上述步骤S8033具体可以包括:所述客户端使用预置的非对称加密算法计算第一公钥和第二私钥,得到所述共享秘钥。具体的,KEY=RSA.CreateShareKey(Publickey,jsPrivatekey);此时客户端生成的共享密钥KEY和上面文件加密算法中服务器生成的共享密钥KEY值是同一个值。需要说明的是,此处计算共享秘钥方式与上述文件加密算法中对应,具体的,若上述文件加密算法中使用的第一公钥和第二私钥生成的,则此处也是对应使用第一公钥和第二私钥生成,若上述文件加密算法中使用的第二公钥和第一私钥生成的,则此处同样也是对应使用第二公钥和第一私钥生成。
[0184] 进一步的,如图13所示,上述步骤S804具体可以包括:
[0185] S8041、使用对称解密算法以共享秘钥为KEY值对第一序列中第一个JS代码进行解密;
[0186] 需要说明的是,上述文件加密算法中对称加密算法和本实施例中对称解密算法需要对应,如均为AES算法。
[0187] S8042、使用对称解密算法对第一序列中其他JS代码文件依次进行解密。
[0188] 其中,对其他JS代码文件中每个JS代码文件,当前JS代码文件的哈希值为后一个JS代码文件解密的KEY值。
[0189] 具体的,同样以接收自服务器的JS代码文件加密的顺序为B.js,C.js,[0190] A.js为例进行介绍:
[0191] (1)客户端则会解密B.js文件:
[0192] 利用上述计算得到的公钥秘钥KEY使用对称解密算法(如AES)进行解密:
[0193] B.js=AES.Decrypt(encryptB.js,KEY);
[0194] 从而得到明文的B.js文件。
[0195] (2)客户端解密C.js文件
[0196] 先使用B.js的明文来生成KEY值(即BKey):
[0197] BKey=Md5.Create(B.js);
[0198] 然后利用BKey作为对称解密算法的KEY值解密C.js:
[0199] C.js=AES.Decrypt(encryptC.js,BKey);
[0200] (3)客户端解密A.js文件
[0201] 先使用C.js的明文来生成KEY值(即CKey):
[0202] CKey=Md5.Create(C.js);
[0203] 然后利用CKey作为对称解密算法的KEY值解密A.js:
[0204] A.js=AES.Decrypt(encryptA.js,CKey);
[0205] 因此本实施例中的解密首先是解密B.js文件,只有解密出B.js才能正确的解密出C.js文件,只有解密出C.js才能正确的解密出A.js文件。同时一旦任何一个文件被修改,导致所有JS代码文件都无法进行解密,提高了JS代码文件的安全性。
[0206] 下面介绍本发明实施例中的文件解密装置的实施例。
[0207] 请参阅图14,为本发明实施例中文件解密装置的一个实施例,该装置包括:
[0208] 接收模块1401,用于接收服务器下发的JS代码文件,所述JS代码文件为所述服务器利用预先计算的共享秘钥加密后的文件;
[0209] 获取模块1402,用于获取所述服务器下发的JS代码文件的顺序,得到第一序列;
[0210] 生成模块1403,用于根据自身客户端标识信息和所述第一序列的JS代码文件生成共享秘钥;
[0211] 解密模块1404,用于根据所述共享秘钥按照第一序列解密所述JS代码文件。
[0212] 进一步的,所述生成模块1403具体用于:
[0213] 根据所述客户端标识信息计算得到配对的第一公钥和第一私钥;
[0214] 根据所述第一序列的JS代码文件生成第二公钥和第二私钥;
[0215] 根据所述第一公钥和所述第二私钥生成所述共享秘钥,或者,所述客户端根据所述第一私钥和所述第二公钥生成所述共享秘钥。
[0216] 进一步的,所述生成模块1403具体用于:
[0217] 使用预置的哈希算法计算所述客户端标识信息,得到所述客户端标识信息的第一哈希值,将所述第一哈希值作为所述第一私钥;
[0218] 使用预置的非对称加密算法计算所述第一私钥,得到与所述第一私钥配对的所述第一公钥。
[0219] 进一步的,所述生成模块1403具体用于:
[0220] 使用预置的哈希算法计算所述第一序列的JS代码文件,得到第二哈希值,将所述第二哈希值作为所述第二私钥;
[0221] 使用预置的非对称加密算法计算所述第二私钥,得到与所述第二私钥配对的所述第二公钥。
[0222] 进一步的,所述生成模块1403具体用于:
[0223] 使用预置的非对称加密算法计算所述第一公钥和所述第二私钥,得到所述共享秘钥。
[0224] 进一步的,所述解密模块1404具体用于:
[0225] 使用对称解密算法以所述共享秘钥为KEY值对所述第一序列中第一个JS代码进行解密;
[0226] 使用所述对称解密算法对第一序列中其他JS代码文件依次进行解密,其中,对其他JS代码文件中每个JS代码文件,当前JS代码文件的哈希值为后一个JS代码文件解密的KEY值。
[0227] 本发明实施例中还提供一种客户端,请参见图15,所述客户端包括:
[0228] 存储器1501,处理器1502及存储在所述存储器上并可在所述处理器上运行的计算机程序1503,其中,所述处理器1502执行所述计算机程序1503时可以实现上述文件解密方法。
[0229] 需要说明的是,本申请涉及的客户端包括但不限于是:移动终端(手机、智能手机、PAD、笔记本电脑等等)、固定终端(计算机)。
[0230] 为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。存储器1501可用于存储计算机程序1503,上述计算机程序包括软件程序、模块和数据,处理器1502通过运行执行存储在存储器1501的计算机程序1503,从而执行客户端的各种功能应用以及数据处理。
[0231] 在具体的实施过程中,存储器1501可用于存储软件程序以及模块,处理器1502通过运行存储在存储器1501的软件程序以及模块,从而执行客户端的各种功能应用以及数据处理。存储器1501可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(例如游戏类应用程序、聊天类应用程序)等;存储数据区可存储根据客户端的使用所创建的数据(游戏配置数据、音频数据)等。此外,存储器1501可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。处理器1502是客户端的控制中心,利用各种接口和线路连接整个客户端的各个部分,通过运行或执行存储在存储器1501内的软件程序和/或模块,以及调用存储在存储器1501内的数据,执行客户端的各种功能和处理数据,从而对客户端进行整体监控。可选的,处理器1502可包括一个或多个处理单元;优选的,处理器1502可集成应用处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等。
[0232] 本发明实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的文件解密方法的部分或全部步骤。
[0233] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0234] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0235] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0236] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0237] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0238] 以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。