CN107196902A - 一种保护模块文件的方法及客户端 - Google Patents
一种保护模块文件的方法及客户端 Download PDFInfo
- Publication number
- CN107196902A CN107196902A CN201710206857.2A CN201710206857A CN107196902A CN 107196902 A CN107196902 A CN 107196902A CN 201710206857 A CN201710206857 A CN 201710206857A CN 107196902 A CN107196902 A CN 107196902A
- Authority
- CN
- China
- Prior art keywords
- information
- module file
- file
- module
- key
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3249—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
Abstract
本发明提供了一种保护模块文件的方法及客户端,所述方法包括:根据预设的文件名查找加密后的模块文件;读取查找到的所述模块文件;接收密钥信息,基于所述密钥信息对所述模块文件进行解密,获取所述模块文件的明文信息;其中,所述加密后的模块文件是以数据文件的形式进行保存的;如此,将模块文件伪装成数据文件保存,进一步提高了模块文件的隐蔽性,增强对模块文件的保护力度,使得模块文件不能轻易被盗用;并且,利用加密算法对模块文件加密后,只有合法的客户端才能接收到密钥信息,即使第三方或者黑客盗取到该模块文件,也无法直接使用,进而确保了软件开发商的利益。
Description
技术领域
本发明属于通信技术领域,尤其涉及一种保护模块文件的方法及客户端。
背景技术
目前,软件开发过程中通常会采用模块化开发,将软件的功能进行模块化拆分,不同的模块负责不同的功能。同时在设计模块时尽可能的使得模块松耦合,使得模块能够独立使用,从而给模块的使用者提供了极大的方便。
当程序发布时,程序主框架则会加载一个个独立的模块来实现整个程序的功能。对于Windows客户端来说,程序则是一个动态链接库文件(DLL,Dynamic Link Library)。由于在程序发布到客户端后,使用者可以从客户端的安装目录中获取到一个个独立的DLL文件,那么对于第三方或者HACK也可以很方便的获取到所有的模块文件并进行使用,这样就导致一些核心模块中的核心函数被盗用,进而损坏了软件开发商的利益。
发明内容
针对现有技术存在的问题,本发明实施例提供了一种保护核心模块的方法及客户端,用于解决现有技术中在程序发布后,一些核心程序模块中的核心函数容易被第三方或者黑客盗用,导致软件开发商的利益被损坏的技术问题。
本发明提供一种保护模块文件的方法,所述方法包括:
根据预设的文件名查找加密后的模块文件;
读取查找到的所述模块文件;
接收密钥信息,基于所述密钥信息对所述模块文件进行解密,获取所述模块文件的明文信息;其中,所述加密后的模块文件是以数据文件的形式进行保存的。
上述方案中,所述读取查找到的所述模块文件,包括:
利用函数fopen(“xx”,“rb”)打开所述模块文件;
获取所述模块文件的占用内存;
调用函数fread(buff,filesize,1,file)读取所述模块文件至系统内存中,并将所述模块文件存储至缓存buff中;其中,所述xx为模块文件名。
上述方案中,基于密钥信息对所述模块文件进行解密之前,还包括:
利用解压缩函数Zlib.decompress(buff,filesize)对读取到的所述模块文件进行解压缩。
上述方案中,所述基于密钥信息对所述模块文件进行解密,包括:
向服务器发送密钥请求信息,使得所述服务器基于用户注册ID返回所述密钥信息;
据所述密钥信息在所述模块文件的密文信息中提取出附加信息;
将所述密钥信息与所述附加信息进行组合形成一组合密钥;
利用所述组合密钥将所述密文信息转换成相应的明文信息。
上述方案中,所述基于密钥信息对所述模块文件进行解密,包括:
接收图像信息,从所述图像信息中读取至少一组颜色值,所述图像信息为对所述模块文件进行加密的加密结果;
根据第二转换规则将所述至少一组颜色值转换为数字信息;
将所述数字信息转换为字符编码;
将所述字符编码转换所述明文信息。
上述方案中,从所述图像中读取至少一组颜色值包括:
接收混淆数值,根据所述混淆数值确定的随机生成的混淆色块的数量;
基于混淆算法确定所述混淆色块在所述图像中的写入位置;
确定写入所述颜色值的第一基准点;
以所述第一基准点为起始位置遍历所述图像,在遍历过程中,基于所述混淆色块的数量及在所述混淆色块在所述图像中的写入位置跳过所述混淆色块,读取所述至少一组颜色值。
上述方案中,所述根据第二转换规则将相所述至少一组颜色值转换为数字信息,包括:
确定每种颜色对应的最大阶层,根据公式A=(B*C+G)*C+R确定所述数字信息的数值A;其中,所述每种颜色对应的最大阶层相同,所述R为红色,所述G为绿色,所述B为蓝色,所述C为所述每种颜色对应的最大阶层。
上述方案中,所述基于密钥信息对所述模块文件进行解密,包括:
接收音频信息,从所述音频信息中读取至少一种音频码,所述音频信息为对所述模块文件进行加密的加密结果;
根据第三转换规则将所述至少一组音频码转换为所述明文信息。
上述方案中,所述从音频信息中读取至少一种音频码,包括:
读取音频数据,获取所述音频的频率队列;
遍历所述频率队列,获取第一频率及第二频率;
将所述第一频率转换为第一音频编码,将所述第二频率转换为第二音频编码;
根据所述第一音频编码及所述第二音频编码确定相应的音频编码;
将所述音频编码进行组合获取所述至少一组音频码。
本发明还提供一种客户端,所述客户端包括:
查找单元,用于根据预设的文件名查找加密后的模块文件;
读取单元,用于读取查找到的所述模块文件;
解密单元,用于接收密钥信息,基于所述密钥信息对所述模块文件进行解密,获取所述模块文件的明文信息;其中,所述加密后的模块文件是以数据文件的形式进行保存的。
本发明提供了一种保护模块文件的方法及客户端,所述方法包括:根据预设的文件名查找加密后的模块文件;读取查找到的所述模块文件;接收密钥信息,基于所述密钥信息对所述模块文件进行解密,获取所述模块文件的明文信息;其中,所述加密后的模块文件是以数据文件的形式进行保存的;如此,将模块文件伪装成数据文件保存,进一步提高了模块文件的隐蔽性,增强对模块文件的保护力度,使得模块文件不能轻易被盗用;并且,利用加密算法对模块文件加密后,只有合法的客户端才能接收到密钥信息,即使第三方或者黑客盗取到该模块文件,也无法直接使用,进而确保了软件开发商的利益。
附图说明
图1为本发明实施例一提供的保护模块文件的方法流程示意图;
图2为本发明实施例二提供的保护模块文件的装置结构示意图。
具体实施方式
为了解决核心程序模块中的核心函数容易被第三方或者黑客盗用,导致软件开发商的利益被损坏的技术问题,本发明提供了一种保护模块文件的方法及客户端,所述方法包括:根据预设的文件名查找加密后的模块文件;读取查找到的所述模块文件;接收密钥信息,基于所述密钥信息对所述模块文件进行解密,获取所述模块文件的明文信息;其中,所述加密后的模块文件是以数据文件的形式进行保存的。
下面通过附图及具体实施例对本发明的技术方案做进一步的详细说明。
实施例一
本实施例提供一种保护模块文件的方法,如图1所示,所述方法包括:
S101,根据预设的文件名查找加密后的模块文件。
本步骤中,为了提高模块文件的隐蔽性,所述加密后的模块文件是调用文件读写库函数将模块文件的内存数据保存至磁盘等存储介质中的,比如写入“xx.data”的文件夹中,因此在查找模块文件时,可以根据预设的文件名查找加密后的模块文件。所述预设的文件名即为“xx.data”。
S102,读取查找到的所述模块文件。
本步骤中,当根据预设的文件名查找到模块文件之后,读取所述模块文件至系统内存,具体地:
首先调用系统库函数fopen(“xx”,“rb”)打开所述模块文件;其中,所述“xx”为模块文件名,所述“rb”为读取文件。
读取到模块文件之后,将文件指针移动至所述模块文件的尾部,获取所述模块文件的占用内存,具体程序实现如下:
fseek(file,0,SEEK_END);
uint filesize=ftell(file);
当获取到所述模块文件的占用内存后,调用函数fread(buff,filesize,1,file)读取所述模块文件至系统内存中,并将所述模块文件存储至缓存buff中。
当读取到模块文件的内容后,因加密时为了降低模块文件的占用内存,是将模块文件压缩了,因此,本步骤中还需利用解压缩函数Zlib.decompress(buff,filesize)对读取到的所述模块文件进行解压缩,以还原模块文件的原始文件。
S103,接收密钥信息,基于所述密钥信息对所述模块文件进行解密,获取所述模块文件的明文信息。
本步骤中,当客户端对模块文件解压缩后,向服务器发送密钥请求信息,所述服务器根据用户注册ID判断所述客户端是否合法,若合法,则向所述客户端发送密钥信息,若不合法,则丢弃该条密钥请求信息。
当获取到密钥信息后,基于所述密钥信息利用解密算法对所述模块文件进行解密,获取所述模块文件的明文信息。
具体地,当模块文件为文字信息,且加密算法是TEA加密算法时,基于所述密钥信息利用解密算法对所述模块文件进行解密,包括:
利用解密算法TEA.decrypt(buff,filesize,key)对所述模块文件进行解密;其中,所述KEY为接收到的密钥信息;所述decrypt接口是TEA算法的解密接口。
当加密算法是AES加密算法时,基于所述密钥信息利用解密算法对所述模块文件进行解密,包括:
利用解密算法AES.decrypt(buff,filesize,key)对所述模块文件进行解密;其中,所述KEY为接收到的密钥信息;此时所述decrypt接口是AES算法的解密接口。
当加密算法是RSA加密算法时,基于所述密钥信息利用解密算法对所述模块文件进行解密,包括:
利用解密算法RSA.decrypt(buff,filesize,key)对所述模块文件进行解密;其中,所述KEY为接收到的密钥信息;此时所述decrypt接口是RSA算法的解密接口。
这里,当加密算法为预设的其他加密算法时,基于所述密钥信息利用解密算法对所述模块文件进行解密,还包括:
当接收到密钥信息后,判断出密钥的长度信息,并根据所述密钥在所述密文信息中提取出附加信息,具体包括:基于所述密钥确定出所述附加信息在所述密文信息中的插入位置,根据密钥的长度信息确定附加信息的长度信息;在所述密文信息的所述插入位置基于所述长度信息提取出所述附加信息。其中,所述附加信息的长度可以为密钥长度的2~3倍,且附加信息的字符可以包括:数字或字母。
基于所述密钥确定出所述附加信息在所述密文信息中的插入位置,包括:确定所述密钥的参照位;获取所述密钥参照位的字符;按照预设的第一转换规则将所述字符转换为一数值;基于所述数值确定出所述插入位置。
其中,预设的第一转换规则为将所述可以包括多种:比如将字符与十进制数值对应转换,将字符与ASCII码值进行对应转换。
当将字符与ASCII码值进行对应转换时,接收到密钥后,然后获取密钥参照位的字符,确定所述字符对应的十进制ASCII码值,以此值作为参照值在密文中寻找附加信息字符所在的位置。寻找到该位置后,将附加信息字符从密文信息中提取出来。这里,所述密钥的参照位可以为密钥中的任一位,比如首位或末位;当以密钥的末位设置为密钥的参照位,比如密钥为12345,那么参照位的字符就是“5”,再获取到“5”对应的ASCII码为“53”,然后将附加信息从密文信息中的第53个字符之后的位置提取出即可。
将所述附加信息从密文信息中提取出之后,并判断该密文字符末尾是否有相应的文件类型,如果有,则新建一个该类型的文件以方便后期解密写入。如果没有,则默认新建一个文档文件来记录解密数据。
然后,在得到密钥字符串和附加信息的字符串后,将两个字符串进行拼接,形成一组合密钥,并使用该组合密钥将密文信息转换为明文信息,这样就可以将加密的模块文件转换为明文信息,然后将其显示在客户端的屏幕上。
这里,当加密算法为预设的其他加密算法,且加密后的模块文件为图像信息时,基于所述密钥信息利用解密算法对所述模块文件进行解密,还包括:
从图像中读取至少一组颜色值,所述图像为对明文信息进行加密的加密结果;根据第二转换规则将所述至少一组颜色值转换为数字信息;将所述数字信息转换为字符编码;将所述字符编码转换所述明文信息。
根据第二转换规则将相所述至少一组颜色值转换为数字信息,包括:
确定每种颜色对应的最大阶层,根据公式A=(B*C+G)*C+R确定所述数字信息的数值A;其中,所述每种颜色对应的最大阶层相同,所述R为红色,所述G为绿色,所述B为蓝色,所述C为所述每种颜色对应的最大阶层。
当所述图像中混淆有混淆色块时,从所述图像中读取至少一组颜色值包括:接收混淆数值,根据所述混淆数值确定的随机生成的混淆色块的数量;基于混淆算法确定所述混淆色块在所述图像中的写入位置;确定写入所述颜色值的第一基准点;以所述第一基准点为起始位置遍历所述图像,在遍历过程中,基于所述混淆色块的数量及在所述混淆色块在所述图像中的写入位置跳过所述混淆色块,读取所述至少一组颜色值。
这里,当加密算法为预设的其他加密算法,且加密后的模块文件为音频信息时,基于所述密钥信息利用解密算法对所述模块文件进行解密,还包括:
接收音频,从所述音频中读取至少一种音频码;根据第三转换规则将所述至少一组音频码转换为明文信息。
所述从音频中读取至少一种音频码,包括:读取音频数据,获取所述音频的频率队列;遍历所述频率队列,获取第一频率及第二频率;将所述第一频率转换为第一音频编码,将所述第二频率转换为第二音频编码;根据所述第一音频编码及所述第二音频编码确定相应的音频编码;将所述音频编码进行组合获取所述至少一组音频码。
所述读取音频数据,获取所述音频的频率队列,包括:建立一音频信息对象,在所述音频信息对象中设置一采样频率;基于所述采样频率采集所述音频数据,并将所述音频数据存储至一数组中;遍历所述数组,将所述数组中的每一项数据转换为相应的频率,形成频率队列。
所述根据第三转换规则将所述至少一组音频码转换为明文信息包括;根据预设的提取规则,将所述音频码拆分为至少一组音频编码;确定每个数字对应的音频编码;基于所述每个数字对应的音频编码及每组音频编码,将所述音频编码转换为至少一组数字信息;将所述至少一组数字信息转换为字符编码;将所述字符编码转换为所述明文信息。
这样就完成了解密过程,获取到模块数据。
对所述模块文件进行解密后,将模块文件保存至客户端的临时目录中进行加载,主程序就可以正常加载模块文件来使用该模块的所有功能。具体实现如下:
首先打开一个文件名为“xx.dll”的文件,然后调用函数fwrite来模块的数据写入到“xx.dll”文件中,具体实现如下:
FILE*file=fopen(“xx.dll”,“wb”);
fwrite(buff,filesize,1,file);
Fclose(file);
保存好之后,可以利用系统API函数LoadLibrary来加载模块文件,具体实现如下:
HMODULE LoadLibrary(LPCTSTR lpFileName);
这里,FileName应该是xxx+xx.dll,这样就正常使用该模块的功能了。
实施例二
相应于实施例一,本实施例提供一种客户端,如图2所示,所述客户端包括:查找单元21、读取单元22、解密单元23及解压缩单元24;其中,
为了提高模块文件的隐蔽性,所述加密后的模块文件是调用文件读写库函数将模块文件的内存数据保存至磁盘等存储介质中的,比如写入“xx.data”的文件夹中,因此查找单元21在查找模块文件时,可以根据预设的文件名查找加密后的模块文件。所述预设的文件名即为“xx.data”。
当根据预设的文件名查找到模块文件之后,读取单元22读取所述模块文件至系统内存,具体地:
首先调用系统库函数fopen(“xx”,“rb”)打开所述模块文件;其中,所述“xx”为模块文件名,所述“rb”为读取文件。
读取到模块文件之后,将文件指针移动至所述模块文件的尾部,获取所述模块文件的占用内存,具体程序实现如下:
fseek(file,0,SEEK_END);
uint filesize=ftell(file);
当获取到所述模块文件的占用内存后,调用函数fread(buff,filesize,1,file)读取所述模块文件至系统内存中,并将所述模块文件存储至缓存buff中。
当所述读取单元22读取到模块文件的内容后,因加密时为了降低模块文件的占用内存,是将模块文件压缩了,因此,解压缩单元24利用解压缩函数Zlib.decompress(buff,filesize)对读取到的所述模块文件进行解压缩,以还原模块文件的原始文件。
当获取到模块文件的原始文件后,解密单元23用于接收密钥信息,基于所述密钥信息对所述模块文件进行解密,获取所述模块文件的明文信息。
具体地,当解压缩单元24对模块文件解压缩后,所述解密单元23向服务器发送密钥请求信息,所述服务器根据用户注册ID判断所述客户端是否合法,若合法,则向所述解密单元23发送密钥信息,若不合法,则丢弃该条密钥请求信息。
当解密单元23获取到密钥信息后,基于所述密钥信息利用解密算法对所述模块文件进行解密,获取所述模块文件的明文信息。
具体地,当模块文件为文字信息,且加密算法是TEA加密算法时,解密单元23基于所述密钥信息利用解密算法对所述模块文件进行解密,包括:
利用解密算法TEA.decrypt(buff,filesize,key)对所述模块文件进行解密;其中,所述KEY为接收到的密钥信息;所述decrypt接口是TEA算法的解密接口。
当加密算法是AES加密算法时,基于所述密钥信息利用解密算法对所述模块文件进行解密,包括:
利用解密算法AES.decrypt(buff,filesize,key)对所述模块文件进行解密;其中,所述KEY为接收到的密钥信息;此时所述decrypt接口是AES算法的解密接口。
当加密算法是RSA加密算法时,基于所述密钥信息利用解密算法对所述模块文件进行解密,包括:
利用解密算法RSA.decrypt(buff,filesize,key)对所述模块文件进行解密;其中,所述KEY为接收到的密钥信息;此时所述decrypt接口是RSA算法的解密接口。
这里,当加密算法为预设的其他加密算法时,解密单元23基于所述密钥信息利用解密算法对所述模块文件进行解密,还包括:
当接收到密钥信息后,判断出密钥的长度信息,并根据所述密钥在所述密文信息中提取出附加信息,具体包括:基于所述密钥确定出所述附加信息在所述密文信息中的插入位置,根据密钥的长度信息确定附加信息的长度信息;在所述密文信息的所述插入位置基于所述长度信息提取出所述附加信息。其中,所述附加信息的长度可以为密钥长度的2~3倍,且附加信息的字符可以包括:数字或字母。
基于所述密钥确定出所述附加信息在所述密文信息中的插入位置,包括:确定所述密钥的参照位;获取所述密钥参照位的字符;按照预设的第一转换规则将所述字符转换为一数值;基于所述数值确定出所述插入位置。
其中,预设的第一转换规则为将所述可以包括多种:比如将字符与十进制数值对应转换,将字符与ASCII码值进行对应转换。
当将字符与ASCII码值进行对应转换时,接收到密钥后,然后获取密钥参照位的字符,确定所述字符对应的十进制ASCII码值,以此值作为参照值在密文中寻找附加信息字符所在的位置。寻找到该位置后,将附加信息字符从密文信息中提取出来。这里,所述密钥的参照位可以为密钥中的任一位,比如首位或末位;当以密钥的末位设置为密钥的参照位,比如密钥为12345,那么参照位的字符就是“5”,再获取到“5”对应的ASCII码为“53”,然后将附加信息从密文信息中的第53个字符之后的位置提取出即可。
将所述附加信息从密文信息中提取出之后,并判断该密文字符末尾是否有相应的文件类型,如果有,则新建一个该类型的文件以方便后期解密写入。如果没有,则默认新建一个文档文件来记录解密数据。
然后,在得到密钥字符串和附加信息的字符串后,将两个字符串进行拼接,形成一组合密钥,并使用该组合密钥将密文信息转换为明文信息,这样就可以将加密的模块文件转换为明文信息,然后将其显示在客户端的屏幕上。
这里,当加密算法为预设的其他加密算法,且加密后的模块文件为图像信息时,解密单元23基于所述密钥信息利用解密算法对所述模块文件进行解密,还包括:
从图像中读取至少一组颜色值,所述图像为对明文信息进行加密的加密结果;根据第二转换规则将所述至少一组颜色值转换为数字信息;将所述数字信息转换为字符编码;将所述字符编码转换所述明文信息。
根据第二转换规则将相所述至少一组颜色值转换为数字信息,包括:
确定每种颜色对应的最大阶层,根据公式A=(B*C+G)*C+R确定所述数字信息的数值A;其中,所述每种颜色对应的最大阶层相同,所述R为红色,所述G为绿色,所述B为蓝色,所述C为所述每种颜色对应的最大阶层。
当所述图像中混淆有混淆色块时,从所述图像中读取至少一组颜色值包括:接收混淆数值,根据所述混淆数值确定的随机生成的混淆色块的数量;基于混淆算法确定所述混淆色块在所述图像中的写入位置;确定写入所述颜色值的第一基准点;以所述第一基准点为起始位置遍历所述图像,在遍历过程中,基于所述混淆色块的数量及在所述混淆色块在所述图像中的写入位置跳过所述混淆色块,读取所述至少一组颜色值。
这里,当加密算法为预设的其他加密算法,且加密后的模块文件为音频信息时,解密单元23基于所述密钥信息利用解密算法对所述模块文件进行解密,还包括:
接收音频,从所述音频中读取至少一种音频码;根据第三转换规则将所述至少一组音频码转换为明文信息。
所述从音频中读取至少一种音频码,包括:读取音频数据,获取所述音频的频率队列;遍历所述频率队列,获取第一频率及第二频率;将所述第一频率转换为第一音频编码,将所述第二频率转换为第二音频编码;根据所述第一音频编码及所述第二音频编码确定相应的音频编码;将所述音频编码进行组合获取所述至少一组音频码。
所述读取音频数据,获取所述音频的频率队列,包括:建立一音频信息对象,在所述音频信息对象中设置一采样频率;基于所述采样频率采集所述音频数据,并将所述音频数据存储至一数组中;遍历所述数组,将所述数组中的每一项数据转换为相应的频率,形成频率队列。
所述根据第三转换规则将所述至少一组音频码转换为明文信息包括;根据预设的提取规则,将所述音频码拆分为至少一组音频编码;确定每个数字对应的音频编码;基于所述每个数字对应的音频编码及每组音频编码,将所述音频编码转换为至少一组数字信息;将所述至少一组数字信息转换为字符编码;将所述字符编码转换为所述明文信息。
这样就完成了解密过程,获取到模块数据。
对所述模块文件进行解密后,将模块文件保存至客户端的临时目录中进行加载,主程序就可以正常加载模块文件来使用该模块的所有功能。具体实现如下:
首先先打开一个文件名为“xx.dll”的文件,然后调用函数fwrite来模块的数据写入到“xx.dll”文件中,具体实现如下:
FILE*file=fopen(“xx.dll”,“wb”);
fwrite(buff,filesize,1,file);
Fclose(file);
保存好之后,可以利用系统API函数LoadLibrary来加载模块文件,具体实现如下:
HMODULE LoadLibrary(LPCTSTR lpFileName);
这里,FileName应该是xxx+xx.dll,这样就正常使用该模块的功能了。
本发明实施例提供的保护模块文件的方法及客户端能带来的有益效果至少是:
本发明实施例提供一种保护模块文件的方法及客户端,所述方法包括:根据预设的文件名查找加密后的模块文件;读取查找到的所述模块文件;接收密钥信息,基于所述密钥信息对所述模块文件进行解密,获取所述模块文件的明文信息;其中,所述加密后的模块文件是以数据文件的形式进行保存的;如此,将模块文件伪装成数据文件保存,进一步提高了模块文件的隐蔽性,增强对模块文件的保护力度,使得模块文件不能轻易被盗用;并且,利用加密算法对模块文件加密后,只有合法的客户端才能接收到密钥信息,即使第三方或者黑客盗取到该模块文件,由于没有破解方法也无法直接使用,进而确保了软件开发商的利益。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种保护模块文件的方法,其特征在于,所述方法包括:
根据预设的文件名查找加密后的模块文件;
读取查找到的所述模块文件;
接收密钥信息,基于所述密钥信息对所述模块文件进行解密,获取所述模块文件的明文信息;其中,所述加密后的模块文件是以数据文件的形式进行保存的。
2.如权利要求1所述的方法,其特征在于,所述读取查找到的所述模块文件,包括:
利用函数fopen(“xx”,“rb”)打开所述模块文件;
获取所述模块文件的占用内存;
调用函数fread(buff,filesize,1,file)读取所述模块文件至系统内存中,并将所述模块文件存储至缓存buff中;其中,所述xx为模块文件名。
3.如权利要求1所述的方法,其特征在于,基于密钥信息对所述模块文件进行解密之前,还包括:
利用解压缩函数Zlib.decompress(buff,filesize)对读取到的所述模块文件进行解压缩。
4.如权利要求1所述的方法,其特征在于,所述基于密钥信息对所述模块文件进行解密,包括:
向服务器发送密钥请求信息,使得所述服务器基于用户注册ID返回所述密钥信息;
据所述密钥信息在所述模块文件的密文信息中提取出附加信息;
将所述密钥信息与所述附加信息进行组合形成一组合密钥;
利用所述组合密钥将所述密文信息转换成相应的明文信息。
5.如权利要求1所述的方法,其特征在于,所述基于密钥信息对所述模块文件进行解密,包括:
接收图像信息,从所述图像信息中读取至少一组颜色值,所述图像信息为对所述模块文件进行加密的加密结果;
根据第二转换规则将所述至少一组颜色值转换为数字信息;
将所述数字信息转换为字符编码;
将所述字符编码转换所述明文信息。
6.如权利要求5所述的方法,其特征在于,从所述图像中读取至少一组颜色值包括:
接收混淆数值,根据所述混淆数值确定的随机生成的混淆色块的数量;
基于混淆算法确定所述混淆色块在所述图像中的写入位置;
确定写入所述颜色值的第一基准点;
以所述第一基准点为起始位置遍历所述图像,在遍历过程中,基于所述混淆色块的数量及在所述混淆色块在所述图像中的写入位置跳过所述混淆色块,读取所述至少一组颜色值。
7.如权利要求5所述的方法,其特征在于,所述根据第二转换规则将相所述至少一组颜色值转换为数字信息,包括:
确定每种颜色对应的最大阶层,根据公式A=(B*C+G)*C+R确定所述数字信息的数值A;其中,所述每种颜色对应的最大阶层相同,所述R为红色,所述G为绿色,所述B为蓝色,所述C为所述每种颜色对应的最大阶层。
8.如权利要求1所述的方法,其特征在于,所述基于密钥信息对所述模块文件进行解密,包括:
接收音频信息,从所述音频信息中读取至少一种音频码,所述音频信息为对所述模块文件进行加密的加密结果;
根据第三转换规则将所述至少一组音频码转换为所述明文信息。
9.如权利要求8所述的方法,其特征在于,所述从音频信息中读取至少一种音频码,包括:
读取音频数据,获取所述音频的频率队列;
遍历所述频率队列,获取第一频率及第二频率;
将所述第一频率转换为第一音频编码,将所述第二频率转换为第二音频编码;
根据所述第一音频编码及所述第二音频编码确定相应的音频编码;
将所述音频编码进行组合获取所述至少一组音频码。
10.一种客户端,其特征在于,所述客户端包括:
查找单元,用于根据预设的文件名查找加密后的模块文件;
读取单元,用于读取查找到的所述模块文件;
解密单元,用于接收密钥信息,基于所述密钥信息对所述模块文件进行解密,获取所述模块文件的明文信息;其中,所述加密后的模块文件是以数据文件的形式进行保存的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710206857.2A CN107196902A (zh) | 2017-03-31 | 2017-03-31 | 一种保护模块文件的方法及客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710206857.2A CN107196902A (zh) | 2017-03-31 | 2017-03-31 | 一种保护模块文件的方法及客户端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107196902A true CN107196902A (zh) | 2017-09-22 |
Family
ID=59871696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710206857.2A Pending CN107196902A (zh) | 2017-03-31 | 2017-03-31 | 一种保护模块文件的方法及客户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107196902A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030097577A1 (en) * | 2001-11-20 | 2003-05-22 | Rainbow Technologies, Inc. | Software protection method utilizing hidden application code in a protection dynamic link library object |
US20090144830A1 (en) * | 2007-11-29 | 2009-06-04 | Ignite Learning, Inc. | Secure digital content delivery system and method |
CN101908119A (zh) * | 2010-08-12 | 2010-12-08 | 浙江中控软件技术有限公司 | 一种动态链接库dll文件的处理方法和装置 |
CN102938036A (zh) * | 2011-11-29 | 2013-02-20 | Ut斯达康通讯有限公司 | Windows动态链接库的分段双重加密及安全加载方法 |
CN106330976A (zh) * | 2016-11-03 | 2017-01-11 | 武汉斗鱼网络科技有限公司 | 一种信息加、解密的方法及装置 |
CN106452607A (zh) * | 2016-11-03 | 2017-02-22 | 武汉斗鱼网络科技有限公司 | 一种传输、解析信息的方法及装置 |
CN106506487A (zh) * | 2016-11-03 | 2017-03-15 | 武汉斗鱼网络科技有限公司 | 一种信息加、解密方法及装置 |
-
2017
- 2017-03-31 CN CN201710206857.2A patent/CN107196902A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030097577A1 (en) * | 2001-11-20 | 2003-05-22 | Rainbow Technologies, Inc. | Software protection method utilizing hidden application code in a protection dynamic link library object |
US20090144830A1 (en) * | 2007-11-29 | 2009-06-04 | Ignite Learning, Inc. | Secure digital content delivery system and method |
CN101908119A (zh) * | 2010-08-12 | 2010-12-08 | 浙江中控软件技术有限公司 | 一种动态链接库dll文件的处理方法和装置 |
CN102938036A (zh) * | 2011-11-29 | 2013-02-20 | Ut斯达康通讯有限公司 | Windows动态链接库的分段双重加密及安全加载方法 |
CN106330976A (zh) * | 2016-11-03 | 2017-01-11 | 武汉斗鱼网络科技有限公司 | 一种信息加、解密的方法及装置 |
CN106452607A (zh) * | 2016-11-03 | 2017-02-22 | 武汉斗鱼网络科技有限公司 | 一种传输、解析信息的方法及装置 |
CN106506487A (zh) * | 2016-11-03 | 2017-03-15 | 武汉斗鱼网络科技有限公司 | 一种信息加、解密方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103780622B (zh) | 一种面向云存储的数据分类加密方法 | |
US8918633B2 (en) | Information processing device, information processing system, and program | |
US8571220B2 (en) | Method and apparatus for securing data in a memory device | |
CN104579689B (zh) | 一种软密钥系统及实现方法 | |
US20070288752A1 (en) | Secure removable memory element for mobile electronic device | |
JP4167476B2 (ja) | データ保護・保管方法/サーバ | |
CN106067874B (zh) | 一种将数据记录至服务器端的方法、终端和服务器 | |
US8112638B2 (en) | Secure backup system and method in a mobile telecommunication network | |
CN101763397B (zh) | 处理图像文件中扩展信息的装置及方法 | |
CN102647712B (zh) | 一种手机数据加密方法以及解密方法 | |
US20140079219A1 (en) | System and a method enabling secure transmission of sms | |
FR3006082A1 (fr) | Procede de mise en œuvre d'un droit sur un contenu | |
CN107105324A (zh) | 一种保护弹幕信息的方法及客户端 | |
JP2007249507A (ja) | 情報漏洩防止方法、情報漏洩防止システム及び情報端末 | |
CN107241184A (zh) | 基于改良aes的个人密码生成和管理方法 | |
Park et al. | A methodology for the decryption of encrypted smartphone backup data on android platform: A case study on the latest samsung smartphone backup system | |
CN107092815A (zh) | 一种保护模块文件的方法及服务器 | |
CN103458101A (zh) | 一种手机私密联系人的硬件加密存储方法及系统 | |
CN110955909B (zh) | 个人数据保护方法及区块链节点 | |
CN111177783B (zh) | 移动存储介质防泄密的方法和装置 | |
CN102883039A (zh) | 手机多媒体私密日记加密方法 | |
CN101719198A (zh) | 处理前向锁定drm内容的方法和系统及便携式装置 | |
CN107196902A (zh) | 一种保护模块文件的方法及客户端 | |
JP2003264540A (ja) | 情報配信方法およびシステム | |
CN103514540A (zh) | 一种优盾业务实现方法及系统 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170922 |