CN108256342B - Shader文件的加密方法、装置及解密方法、装置 - Google Patents

Shader文件的加密方法、装置及解密方法、装置 Download PDF

Info

Publication number
CN108256342B
CN108256342B CN201810028974.9A CN201810028974A CN108256342B CN 108256342 B CN108256342 B CN 108256342B CN 201810028974 A CN201810028974 A CN 201810028974A CN 108256342 B CN108256342 B CN 108256342B
Authority
CN
China
Prior art keywords
file
shader
shader file
client program
dll
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810028974.9A
Other languages
English (en)
Other versions
CN108256342A (zh
Inventor
周志刚
张文明
陈少杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810028974.9A priority Critical patent/CN108256342B/zh
Publication of CN108256342A publication Critical patent/CN108256342A/zh
Application granted granted Critical
Publication of CN108256342B publication Critical patent/CN108256342B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Abstract

本发明实施例提供了一种Shader文件的加密方法、装置及解密方法、装置,该加密方法包括:将客户端程序对应的各个Shader文件分别进行加密;将各个加密后的Shader文件分布到客户端程序的不同DLL文件中;生成配置关系列表,所述配置关系列表中包括Shader文件与对应的加密算法、加密KEY值和所分布的DLL文件之间的对应关系;将所述配置关系列表添加到所述客户端程序的主程序中,并随所述客户端程序进行发布。本发明实施例提供的Shader文件的加密方法、装置及解密方法、装置,能够有效地防止shader文件被黑客或者第三方程序非法获取或修改,实现Shader文件的保护。

Description

Shader文件的加密方法、装置及解密方法、装置
技术领域
本发明涉及计算机网络技术领域,尤其涉及一种Shader文件的加密方法、装置及解密方法、装置。
背景技术
目前,随着移动端互联网的发展,直播网站也越来越受到大家的喜爱。直播平台会给主播提供直播客户端,为了让主播的展现更美观、漂亮,直播客户端会提供各种美颜的效果,例如,磨皮的效果,从而去除脸上的斑点,还例如,各种滤镜的效果,从而可以显示不同的场景的效果。
现有技术中,直播客户端针对这些核心的美颜效果都是通过编写GPU(GraphicsProcessing Unit,图形处理器)的Shader程序(即着色程序)实现,而Shader文件存储的是GPU执行的Shader代码,其文件存储的则是源代码,如果Shader文件被第三方或者其他人获得,则可以直接使用以完成同样的功能或是对Shader代码进行恶意修改。因此,如何对Shader文件进行加密保护,防止其被第三方平台或者黑客所盗取或恶意修改具有重要意义。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的Shader文件的加密方法、装置及解密方法、装置。
本发明的一个方面,提供了一种Shader文件的加密方法,包括:
将客户端程序对应的各个Shader文件分别进行加密;
将各个加密后的Shader文件分布到客户端程序的不同DLL文件中;
生成配置关系列表,所述配置关系列表中包括Shader文件与对应的加密算法、加密KEY值和所分布的DLL文件之间的对应关系;
将所述配置关系列表添加到所述客户端程序的主程序中,并随所述客户端程序进行发布。
可选地,所述将客户端程序对应的各个Shader文件分别进行加密包括:
采用不用的加密算法对所述客户端程序对应的各个Shader文件分别进行加密。
可选地,所述将各个加密后的Shader文件分布到客户端程序的不同DLL文件中包括:
根据预设对应关系将各个加密后的Shader文件分别分布到客户端程序的指定DLL文件中,或采取随机原则将各个加密后的Shader文件分布到客户端程序的不同DLL文件中。
可选地,所述将各个加密后的Shader文件分布到客户端程序的不同DLL文件中包括:
在所述DLL文件中增加全局变量,所述全局变量用于存储加密后的Shader文件。
本发明的一个方面,提供了一种Shader文件的解密方法,包括:
从客户端程序的主程序中获取配置关系列表,所述配置关系列表中包括Shader文件与对应的加密算法、加密KEY值和所分布的DLL文件之间的对应关系;
从所述配置关系列表中查找待执行Shader文件所分布的DLL文件,并从对应的DLL文件中提取加密后的Shader文件;
从所述配置关系列表中查找所述待执行Shader文件对应的加密算法和加密KEY值,并根据所述加密算法对应的解密算法和所述加密KEY值对提取的加密后的Shader文件进行解密,得到待执行Shader文件。
本发明的一个方面,提供了一种Shader文件的加密装置,包括:
加密模块,用于将客户端程序对应的各个Shader文件分别进行加密;
分布模块,用于将各个加密后的Shader文件分布到客户端程序的不同DLL文件中;
配置模块,用于生成配置关系列表,所述配置关系列表中包括Shader文件与对应的加密算法、加密KEY值和所分布的DLL文件之间的对应关系;
添加模块,用于将所述配置关系列表添加到所述客户端程序的主程序中,并随所述客户端程序进行发布。
可选地,所述加密模块,具体用于采用不用的加密算法对所述客户端程序对应的各个Shader文件分别进行加密。
本发明的一个方面,提供了一种Shader文件的解密装置,包括:
获取模块,用于从客户端程序的主程序中获取配置关系列表,所述配置关系列表中包括Shader文件与对应的加密算法、加密KEY值和所分布的DLL文件之间的对应关系;
提取模块,用于从所述配置关系列表中查找待执行Shader文件所分布的DLL文件,并从对应的DLL文件中提取加密后的Shader文件;
解密模块,用于从所述配置关系列表中查找所述待执行Shader文件对应的加密算法和加密KEY值,并根据所述加密算法对应的解密算法和所述加密KEY值对提取的加密后的Shader文件进行解密,得到待执行Shader文件。
此外,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上任一所述方法的步骤。
此外,本发明还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任一所述方法的步骤。
本发明实施例提供的Shader文件的加密方法、装置及解密方法、装置,通过将客户端需要使用的多个Shader文件分别进行加密,然后将其分布到不同的程序组件DLL文件中,从而将核心的Shader文件的加密数据存储到客户端程序的组件中,并且随组件一起发布。而当客户端启动后,需要执行Shader文件的代码时,则从DLL文件中读取Shader文件的加密数据,然后进行解密得到Shader文件,从而极好的起到了隐藏Shader文件的目的,使得黑客或者第三方无法轻易的获取到shader文件,实现了Shader文件的保护。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例的一种Shader文件的加密方法的流程图;
图2为本发明实施例的另一种Shader文件的解密方法的流程图;
图3为本发明实施例的一种Shader文件的加密装置的结构示意图;
图4为本发明实施例的另一种Shader文件的解密装置的结构示意图;
图5为本发明实施例的计算机设备的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
图1示意性示出了本发明一个实施例的Shader文件的加密方法的流程图。所述的Shader文件的加密方法由服务器侧执行。参照图1,本发明实施例提供的Shader文件的加密方法具体包括以下步骤:
步骤S11、将客户端程序对应的各个Shader文件分别进行加密。
本发明实施例中,所述客户端程序可以为直播客户端程序,客户端会提供各种美颜的效果,针对这些美颜效果都是通过编写GPU的Shader程序,而Shader文件是存储GPU执行的Shader程序代码的文件。
具体通过以下步骤实现对客户端程序中需要使用的每个Shader文件的加密:对每个Shader文件进行编码,得到对应的加密KEY值,然后根据所述加密KEY值采用加密算法对每个Shader文件进行加密。在一个具体示例中,可以采用MD5编码算法实现对每个Shader文件的编码。
步骤S12、将各个加密后的Shader文件分布到客户端程序的不同DLL文件中。
步骤S13、生成配置关系列表,所述配置关系列表中包括Shader文件与对应的加密算法、加密KEY值和所分布的DLL文件之间的对应关系。
步骤S14、将所述配置关系列表添加到所述客户端程序的主程序中,并随所述客户端程序进行发布。
本发明实施例提供的Shader文件的加密方法,通过将客户端需要使用的多个Shader文件分别进行加密,然后将其分布到不同的程序组件DLL文件中,从而将核心的Shader文件的加密数据存储到客户端程序的组件中,并且随组件一起发布。而当客户端启动后,需要执行Shader文件的代码时,则从DLL文件中读取Shader文件的加密数据,然后进行解密得到Shader文件,从而极好的起到了隐藏Shader文件的目的,使得黑客或者第三方无法轻易的获取到shader文件,实现了Shader文件的保护。
本发明的一个实施例中,具体可以采用不用的加密算法对所述客户端程序对应的各个Shader文件分别进行加密。
首先,将客户端所有使用的各个Shader文件读取到内存中并且分别计算其MD5值,将得到的MD5值作为后续Shader文件加密的KEY。
本实施例对已经编写好的各个Shader文件进行加密,从而得到一串加密后的字符串。为了进一步的提高Shader文件的加密强度,本发明实施例中进一步可以使用不同的加密算法和KEY来对Shader文件进行加密,从而提高破解门槛。具体实现如下:
1.读取每个Shader文件到内存中。
读取每个独立的Shader文件,将整个文件的内容读取到内存中。本发明实施例使用系统函数fopen和fread来读取文件。
FILE*pFile=fopen("beauty.shader","rb");
通过调用系统函数fopen来打开一个文件。
其中参数1"beauty.shader"是打开的文件名称。
其中参数2"rb"则是以二进制的方式来打开文件。
返回值则是文件的句柄pFile。
fseek(pFile,0,SEEK_END);
通过调用fseek函数则将文件的读取指针移动到文件尾部。
Long Size=ftell(pFile);
通过调用系统函数ftell则得到Shader文件的大小Size。
Char*buffer=(char*)malloc(Size);
调用系统函数malloc来分配一段内存,分配大小则是Shader文件的大小。
fread(buffer,1,Size,pFile);
调用系统函数fread来读取整个文件内容到分配的内存中。
fclose(pFile);
调用系统函数fclose来关闭文件句柄。
从而将整个shader文件的内容读取到了分配的内存中。
2.计算整个Shader文件的Md5值。
本发明实施例,通过对读取的整个Shader文件计算其MD5值,从而得到后续加密Shader文件使用的KEY值。
KEY=MD5.Create(buffer,Size);
通过调用MD5函数的接口Create来计算读取的文件内容计算其MD5结果。
其中参数buff则是读取的shader文件的内存。
其中参数size则是读取的shader文件的大小。
同样的对所有的Shader文件都采用上述的方案,至此就完成了读取Shader文件到内存中并计算其内容的MD5值从而得到对应的KEY值。
然后,针对每个Shader文件内容采用不同的加密算法来加密。
本发明实施例针对每个Shader使用不同的加密算法和KEY进行加密,以此来增加算法的安全性,提高破解的门槛。具体对每个Shader使用何种加密算法,则可以采用随机算法,随机选择一种,也可以针对每一个Shader指定一种算法。最终会得到一份列表,列表中则表明那个Shader文件使用那种加密算法来进行加密的,并且也会存储一份加密时使用的那个KEY值来加密的。具体实现如下:
假设现有beauty1.shader文件,和beauty2.shader文件和beauty3.shader文件,3个shader文件。
那么通过之前的操作可以将3个shader文件都读取进了内存得到3个内存buff,分别是buff1对应读取的beauty1.shader文件,并且对应计算的key1,buff2对应读取的beauty2.shader文件,并且对应计算的key2,buff3对应读取的beauty3.shader文件,并且对应计算的key3。
本实施例中,可以指定beauty1.shader使用加密算法TEA来加密;指定beauty2.shader使用加密算法DES来加密;指定beauty2.shader使用加密算法AES来加密。
具体实现如下:
对于beauty1.shader文件加密:
Encryptbuff1=TEA.encrypt(buff1,buff1len,key1);
通过调用TEA加密算法来对shader文件的内存进行加密。
对于beauty2.shader文件加密:
Encryptbuff2=DES.encrypt(buff2,buff2len,key2);
通过调用DES加密算法来对shader文件的内存进行加密。
对于beauty3.shader文件加密:
Encryptbuff3=AES.encrypt(buff3,buff3len,key3);
通过调用AES加密算法来对shader文件的内存进行加密。
从而完成了对每个Shader文件使用不同的加密算法和KEY来加密从而最终得到3个加密后的内存数据Encryptbuff。并且也会得到一份子配置表格,子表格中则有那个shader文件使用那个加密算法,使用那个key来加密。至此,就完成了对每个Shader文件进行加密。
本发明一个实施例中,所述将各个加密后的Shader文件分布到客户端程序的不同DLL文件中包括:
根据预设对应关系将各个加密后的Shader文件分别分布到客户端程序的指定DLL文件中,或采取随机原则将各个加密后的Shader文件分布到客户端程序的不同DLL文件中。
本实施例中,具体通过在所述DLL文件中增加全局变量,来存储加密后的Shader文件。
在一个具体实施例中,首先在每个DLL中定义一个全局变量用于存储Shader加密内容。
具体的,在预设对应关系或采取随机原则确定了那个DLL文件来对应于那个Shader文件之后,在每个DLL中定义一个全局变量,来存储加密后的Shader文件的内容,并且将定义的全局变量导出,从而使得主程序EXE可以获取到该全局变量存储的Shader文件的内容。具体实现如下:
先假设定义的全局变量名称是Encrypt_Shader;
extern"C"__declspec(dllexport)char*Encrypt_Shader;
通过编译器的语句extern"C"__declspec(dllexport),则可以导出变量全局变量Encrypt_Shader,而在全局变量Encrypt_Shader中则存储了加密后的Shader内容。
再定义一个全局变量用于存储加密后的Shader文件的内容的长度。extern"C"__declspec(dllexport)int Encrypt_Len;
其中Encrypt_Len则表示Encrypt_Shader的内容长度。至此就实现了在DLL文件中定义2个全局的导出变量存储Shader文件的内容和长度。
然后,生成一份子配置表格用于表明那个DLL文件存储那个Shader加密后的数据。对于一个应用程序来说,通常是有一个主程序EXE文件和多个DLL文件组成,那么每一个DLL文件则相当于是一个组件,被EXE文件所使用。本实施例则可以将Shader文件加密后的字符串保存到DLL文件中,然后使用时,则从对应的DLL文件中去读取加密的shader文件内容,然后对内容进行解密从而得到原始的Shader文件,从而可以后续执行Shader的功能。对此那个DLL文件存储那个Shader文件,本实施例则也可以采取随机的原则,也可以按照指定每个DLL文件存储那个Shader文件的策略。最终可以得到一份子配置表格,子表格中则具有那个DLL文件对应于存储那个Shader文件的加密字符串。
例如:
Ab.dll存储beauty1.shader加密串;
Bc.dll存储beauty2.shader加密串;
F.dll存储beauty3.shader加密串。
至此就实现了生成一份配置表格用于表明那个DLL文件来存储那个加密后的shader文件。
最后,根据前面得到的两份子配置表格得到一份配置关系列表,在主程序EXE中保存该配置关系列表。
具体的,在主程序中会保存最终的一份配置关系列表,所述配置关系列表中包括Shader文件与对应的加密算法、加密KEY值和所分布的DLL文件之间的对应关系,用于记录那个DLL存储了那个Shader文件,以及每个Shader文件使用那个加密算法来加密,以及使用那个KEY来进行解密。最终得到配置列表信息如下:
Ab.dll beauty1.shader TEA Key1
Bc.dll beauty2.shader DES Key2
F.dll beauty3.shader AES Key3
从而主程序中可以得到任意一个shader文件的存储位置以及加密时使用那个加密算法,使用那个key值,以供后续解密是根据加密时使用那个加密算法确定对应的解密算法。至此就实现了在主程序EXE中配置一份配置关系列表用于记录各个Shader文件使用时的存储位置、解密算法及key值。
图2示意性示出了本发明一个实施例的Shader文件的解密方法的流程图。所述的Shader文件的解密方法由客户端侧执行。参照图2,本发明实施例提供的Shader文件的解密方法具体包括以下步骤:
步骤S21、从客户端程序的主程序中获取配置关系列表,所述配置关系列表中包括Shader文件与对应的加密算法、加密KEY值和所分布的DLL文件之间的对应关系。
本发明实施例中,所述客户端程序可以为直播客户端程序,客户端会提供各种美颜的效果,针对这些美颜效果都是通过编写GPU的Shader程序,而Shader文件是存储GPU执行的Shader程序代码的文件。
步骤S22、从所述配置关系列表中查找待执行Shader文件所分布的DLL文件,并从对应的DLL文件中提取加密后的Shader文件。
步骤S23、从所述配置关系列表中查找所述待执行Shader文件对应的加密算法和加密KEY值,并根据所述加密算法对应的解密算法和所述加密KEY值对提取的加密后的Shader文件进行解密,得到待执行Shader文件。
在本发明实施例中,当客户端程序中需要调用Shader的代码来实现美颜等功能时,则需要去解密Shader文件的内容。
首先,在客户端程序的EXE主程序中存储了一份配置关系列表,那么当需要执行那个Shader文件时,则可以从配置关系列表中查找待执行Shader文件所分布的DLL文件,读取所述DLL文件中存储的加密后的Shader内容,然后依据解密算法来解密Shader文件的内容,从而得到原始的Shader内容。具体实现如下:
1.读取配置关系列表。
通过读取主程序存储的配置关系列表则可以得到如下数据:
Ab.dll beauty1.shader TEA Key1
从而获得了存储的DLL文件,加密算法以及KEY值。
2.读取DLL文件中加密的Shader内容。
首先加载对应的DLL文件到主程序的进程中。
HINSTANCE hInst=LoadLibrary("Ab.dll");
通过调研系统函数LoadLibrary来加载一个DLL文件。
传入对应的DLL的文件名称"Ab.dll"。
获取该DLL的导出全局变量。
Char*pData=GetProcAddress(hInst,"Encrypt_Shader");
int nLen=GetProcAddress(hInst,"Encrypt_Len");
通过调用系统函数GetProcAddress来获取导出变量的内存位置,本实施例读取了加密后的Shader文件存储的位置,以及存储的Shader文件的大小。
3.对Shader文件进行解密。
读取到了Shader文件内容后,则可以对其进行解密,从而后续可以直接使用。首先则需要从配置关系列表中读取加密算法的类型和加密使用的KEY值。然后调用加密算法对应的解密算法。
shaderbuff=TEA.decrypt(pData,nLen,key1);
其中TEA.decrypt则是TEA算法的解密算法。
其中pData则是从DLL中读取到的加密后的Shader内容。
其中nLen则是读取的加密后的Shader内容的长度。
其中Key1则是加密时使用的KEY数据。
从而最终得到解密后的结果shaderbuff,即是原始的Shader文件的内容。至此实现了读取DLL中存储的加密后的Shader文件的内容,并进行解密得到原始的数据。
本发明实施例提供的Shader文件的解密方法,当客户端启动后,需要执行Shader文件的代码时,则从DLL文件中读取Shader文件的加密数据,然后进行解密得到Shader文件,从而极好的起到了隐藏Shader文件的目的,使得黑客或者第三方无法轻易的获取到shader文件,实现了Shader文件的保护。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
图3示意性示出了本发明一个实施例的Shader文件的加密装置的结构示意图。所述Shader文件的加密装置配置于服务器侧,参照图3,本发明实施例的Shader文件的加密装置具体包括加密模块301、分布模块302、配置模块303以及添加模块304,其中:
加密模块301,用于将客户端程序对应的各个Shader文件分别进行加密;
分布模块302,用于将各个加密后的Shader文件分布到客户端程序的不同DLL文件中;
配置模块303,用于生成配置关系列表,所述配置关系列表中包括Shader文件与对应的加密算法、加密KEY值和所分布的DLL文件之间的对应关系;
添加模块304,用于将所述配置关系列表添加到所述客户端程序的主程序中,并随所述客户端程序进行发布。
在本发明的一个可选实施例中,所述加密模块301,具体用于采用不用的加密算法对所述客户端程序对应的各个Shader文件分别进行加密。
在本发明的一个可选实施例中,分布模块302,具体用于根据预设对应关系将各个加密后的Shader文件分别分布到客户端程序的指定DLL文件中,或采取随机原则将各个加密后的Shader文件分布到客户端程序的不同DLL文件中。
具体的,分布模块302,通过在所述DLL文件中增加全局变量,用来存储加密后的Shader文件。
本发明实施例提供的Shader文件的加密装置,通过将客户端需要使用的多个Shader文件分别进行加密,然后将其分布到不同的程序组件DLL文件中,从而将核心的Shader文件的加密数据存储到客户端程序的组件中,并且随组件一起发布。而当客户端启动后,需要执行Shader文件的代码时,则从DLL文件中读取Shader文件的加密数据,然后进行解密得到Shader文件,从而极好的起到了隐藏Shader文件的目的,使得黑客或者第三方无法轻易的获取到shader文件,实现了Shader文件的保护。
图4示意性示出了本发明一个实施例的Shader文件的解密装置的结构示意图。所述Shader文件的解密装置配置于客户端侧,参照图4,本发明实施例的Shader文件的解密装置具体包括获取模块401、提取模块402以及解密模块403,其中:
获取模块401,用于从客户端程序的主程序中获取配置关系列表,所述配置关系列表中包括Shader文件与对应的加密算法、加密KEY值和所分布的DLL文件之间的对应关系;
提取模块402,用于从所述配置关系列表中查找待执行Shader文件所分布的DLL文件,并从对应的DLL文件中提取加密后的Shader文件;
解密模块403,用于从所述配置关系列表中查找所述待执行Shader文件对应的加密算法和加密KEY值,并根据所述加密算法对应的解密算法和所述加密KEY值对提取的加密后的Shader文件进行解密,得到待执行Shader文件。
本发明实施例提供的Shader文件的解密装置,当客户端启动后,需要执行Shader文件的代码时,则从DLL文件中读取Shader文件的加密数据,然后进行解密得到Shader文件,从而极好的起到了隐藏Shader文件的目的,使得黑客或者第三方无法轻易的获取到shader文件,实现了Shader文件的保护。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
本发明实施例提供的Shader文件的加密方法、装置及解密方法、装置,通过将客户端需要使用的多个Shader文件分别进行加密,然后将其分布到不同的程序组件DLL文件中,从而将核心的Shader文件的加密数据存储到客户端程序的组件中,并且随组件一起发布。而当客户端启动后,需要执行Shader文件的代码时,则从DLL文件中读取Shader文件的加密数据,然后进行解密得到Shader文件,从而极好的起到了隐藏Shader文件的目的,使得黑客或者第三方无法轻易的获取到shader文件,实现了Shader文件的保护。
此外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如图1所示实施例所述方法的步骤或如图2所示实施例所述方法的步骤。
本实施例中,所述Shader文件的加密装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
本实施例中,所述Shader文件的解密装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
图5为本发明实施例提供的计算机设备的示意图。本发明实施例提供的计算机设备,包括存储器501、处理器502及存储在存储器501上并可在处理器502上运行的计算机程序,所述处理器502执行所述计算机程序时实现上述Shader文件的加密方法实施例中的步骤,例如图1所示的步骤,或上述Shader文件的解密方法实施例中的步骤,例如图2所示的步骤。或者,所述处理器502执行所述计算机程序时实现上述Shader文件的加密装置实施例中各模块/单元的功能,例如图3所示的加密模块301、分布模块302、配置模块303以及添加模块304,或,上述Shader文件的解密装置实施例中各模块/单元的功能,例如图4所示的获取模块401、提取模块402以及解密模块403。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述Shader文件的加密装置或所述Shader文件的解密装置中的执行过程。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图5仅仅是计算机设备的示例,并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (7)

1.一种Shader文件的加密方法,其特征在于,包括:
将客户端程序对应的各个Shader文件分别进行加密;
其中,所述将客户端程序对应的各个Shader文件分别进行加密包括:采用不同的加密算法对所述客户端程序对应的各个Shader文件分别进行加密;
将各个加密后的Shader文件分布到客户端程序的不同DLL文件中;
其中,所述将各个加密后的Shader文件分布到客户端程序的不同DLL文件中包括:根据预设对应关系将各个加密后的Shader文件分别分布到客户端程序的指定DLL文件中,或采取随机原则将各个加密后的Shader文件分布到客户端程序的不同DLL文件中;
生成配置关系列表,所述配置关系列表中包括Shader文件与对应的加密算法、加密KEY值和所分布的DLL文件之间的对应关系;
将所述配置关系列表添加到所述客户端程序的主程序中,并随所述客户端程序进行发布。
2.根据权利要求1所述的方法,其特征在于,所述将各个加密后的Shader文件分布到客户端程序的不同DLL文件中包括:
在所述DLL文件中增加全局变量,所述全局变量用于存储加密后的Shader文件。
3.一种Shader文件的解密方法,其特征在于,包括:
在客户端程序的主程序中存储配置关系列表;
从客户端程序的主程序中获取所述配置关系列表,所述配置关系列表中包括Shader文件与对应的加密算法、加密KEY值和所分布的DLL文件之间的对应关系;
从所述配置关系列表中查找待执行Shader文件所分布的DLL文件,并从对应的DLL文件中提取加密后的Shader文件;
从所述配置关系列表中查找所述待执行Shader文件对应的加密算法和加密KEY值,并根据所述加密算法对应的解密算法和所述加密KEY值对提取的加密后的Shader文件进行解密,得到待执行Shader文件。
4.一种Shader文件的加密装置,其特征在于,包括:
加密模块,用于将客户端程序对应的各个Shader文件分别进行加密;
分布模块,用于将各个加密后的Shader文件分布到客户端程序的不同DLL文件中;
配置模块,用于生成配置关系列表,所述配置关系列表中包括Shader文件与对应的加密算法、加密KEY值和所分布的DLL文件之间的对应关系;
添加模块,用于将所述配置关系列表添加到所述客户端程序的主程序中,并随所述客户端程序进行发布;
所述加密模块,具体用于采用不用的加密算法对所述客户端程序对应的各个Shader文件分别进行加密;
所述分布模块,具体用于根据预设对应关系将各个加密后的Shader文件分别分布到客户端程序的指定DLL文件中,或采取随机原则将各个加密后的Shader文件分布到客户端程序的不同DLL文件中。
5.一种Shader文件的解密装置,其特征在于,包括:
存储模块,用于在客户端程序的主程序中存储配置关系列表;
获取模块,用于从客户端程序的主程序中获取所述配置关系列表,所述配置关系列表中包括Shader文件与对应的加密算法、加密KEY值和所分布的DLL文件之间的对应关系;
提取模块,用于从所述配置关系列表中查找待执行Shader文件所分布的DLL文件,并从对应的DLL文件中提取加密后的Shader文件;
解密模块,用于从所述配置关系列表中查找所述待执行Shader文件对应的加密算法和加密KEY值,并根据所述加密算法对应的解密算法和所述加密KEY值对提取的加密后的Shader文件进行解密,得到待执行Shader文件。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-2任一项所述方法或权利要求3所述方法的步骤。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-2任一项所述方法或权利要求3所述方法的步骤。
CN201810028974.9A 2018-01-12 2018-01-12 Shader文件的加密方法、装置及解密方法、装置 Active CN108256342B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810028974.9A CN108256342B (zh) 2018-01-12 2018-01-12 Shader文件的加密方法、装置及解密方法、装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810028974.9A CN108256342B (zh) 2018-01-12 2018-01-12 Shader文件的加密方法、装置及解密方法、装置

Publications (2)

Publication Number Publication Date
CN108256342A CN108256342A (zh) 2018-07-06
CN108256342B true CN108256342B (zh) 2020-05-12

Family

ID=62726574

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810028974.9A Active CN108256342B (zh) 2018-01-12 2018-01-12 Shader文件的加密方法、装置及解密方法、装置

Country Status (1)

Country Link
CN (1) CN108256342B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109598121B (zh) * 2018-12-11 2021-02-12 深圳市网心科技有限公司 应用程序id生成方法、系统、计算机装置及存储介质
CN110532129A (zh) * 2019-09-02 2019-12-03 腾讯科技(深圳)有限公司 一种文件加密存储的方法、装置、设备以及存储介质
CN111228819B (zh) * 2019-12-30 2022-03-11 广东趣炫网络股份有限公司 一种保护Shader的方法、装置和设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013179316A1 (en) * 2012-05-29 2013-12-05 Power-One Italy S.P.A. A method and system for transferring firmware or software to a plurality of devices
CN105282206A (zh) * 2014-07-25 2016-01-27 北京联嘉众赢网络技术有限公司 网站资源文件的处理方法、装置和系统
CN106022014A (zh) * 2016-05-16 2016-10-12 武汉斗鱼网络科技有限公司 一种资源文件的打包方法和解包方法
CN107070656B (zh) * 2017-03-31 2020-02-07 武汉斗鱼网络科技有限公司 一种应用程序中so文件的加密方法、解密方法和系统

Also Published As

Publication number Publication date
CN108256342A (zh) 2018-07-06

Similar Documents

Publication Publication Date Title
CN108259171B (zh) Shader文件的保护方法及装置
US10284372B2 (en) Method and system for secure management of computer applications
EP2803009B1 (en) Virtual machine device having key driven obfuscation and method
CN102890758B (zh) 一种保护可执行文件的方法及系统
CN108256342B (zh) Shader文件的加密方法、装置及解密方法、装置
CN109040134B (zh) 一种信息加密的设计方法及相关装置
JP6109441B1 (ja) ラウンド削減型暗号を採用するxts暗号化システムとともに使用するための動的暗号化鍵
CN109547201B (zh) 一种根密钥的加密方法、计算机可读存储介质及终端设备
CN108256343B (zh) Shader文件的加密方法、装置及解密方法、装置
KR100982515B1 (ko) 해시 체인을 이용하여 디지털 컨텐츠의 접근 횟수를제한하는 장치 및 방법
CN103955654A (zh) 基于虚拟文件系统的u盘安全存储方法
CN107302706A (zh) 图像防盗链方法、装置及电子设备
CN114139204A (zh) 一种匿踪查询方法、装置及介质
Senthilnathan et al. An enhancing reversible data hiding for secured data using shuffle block key encryption and histogram bit shifting in cloud environment
WO2020044095A1 (zh) 文件加密方法、装置、设备/终端/服务器及计算机可读存储介质
CN107391970B (zh) Flash应用程序中的函数访问控制方法及装置
CN111143879A (zh) 一种Android平台SD卡文件保护方法、终端设备及存储介质
CN107423631A (zh) 一种数据库加解密方法和装置
US11455404B2 (en) Deduplication in a trusted execution environment
CN108985109A (zh) 一种数据存储方法及装置
CN110516468B (zh) 一种虚拟机内存快照加密的方法和装置
CN110020533A (zh) 一种vr资源的安全保护方法及终端
CN111984941A (zh) 文件处理方法、装置、终端设备及可读存储介质
CN113839773A (zh) 一种luks密钥离线提取方法、终端设备及存储介质
KR102134847B1 (ko) 분할 데이터 셔플 및 역변환 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant