一种保护模块文件的方法及服务器与流程

文档序号:11458810阅读:159来源:国知局
一种保护模块文件的方法及服务器与流程

本发明属于通信技术领域,尤其涉及一种保护模块文件的方法及服务器。



背景技术:

目前,软件开发过程中通常会采用模块化开发,将软件的功能进行模块化拆分,不同的模块负责不同的功能。同时在设计模块时尽可能的使得模块松耦合,使得模块能够独立使用,从而给模块的使用者提供了极大的方便。

当程序发布时,程序主框架则会加载一个个独立的模块来实现整个程序的功能。对于windows客户端来说,程序则是一个动态链接库文件(dll,dynamiclinklibrary)。由于在程序发布到客户端后,使用者可以从客户端的安装目录中获取到一个个独立的dll文件,那么对于第三方或者hack也可以很方便的获取到所有的模块文件并进行使用,这样就导致一些核心模块中的核心函数被盗用,进而损坏了软件开发商的利益。



技术实现要素:

针对现有技术存在的问题,本发明实施例提供了一种保护模块文件的方法及服务器,用于解决现有技术中在程序发布后,一些核心程序模块中的核心函数容易被第三方或者黑客盗用,导致软件开发商的利益被损坏的技术问题。

本发明实施例提供了一种保护模块文件的方法,所述方法包括:

读取所述模块文件;

利用加密算法对所述模块文件进行加密;

将加密后的所述模块文件保存为数据文件,使得所述模块文件能以数据文件的形式隐藏在安装目录中。

上述方案中,所述读取所述模块文件,包括:

利用函数fopen(“xx”,“rb”)打开所述模块文件;

获取所述模块文件的占用内存;

调用函数fread(buf,filesize,1,file)读取所述模块文件至系统内存中,并将所述模块文件存储至缓存buf中;其中,所述xx为模块文件名。

上述方案中,所述利用加密算法对所述模块文件进行加密,包括:

利用tea加密算法tea.encrypt(buf,filesize,key)对所述模块文buf件进行加密;其中,所述key为预设的密钥信息。

上述方案中,所述利用加密算法对所述模块文件进行加密,还包括:

获取所述模块文件的明文信息;

将所述明文信息转换为字符编码;

将所述字符编码转换为相应的数字信息;

根据第一转换规则将所述数字信息转换为至少一组颜色值;通过所述至少一组颜色值生成图像,所述图像为对所述明文信息进行加密的加密结果。

上述方案中,所述利用加密算法对所述模块文件进行加密,还包括:

获取模块文件的明文信息;

根据第二转换规则将所述明文信息转换为至少一组音频码;

通过所述至少一组音频码生成音频;所述音频为对所述明文信息进行加密的加密结果。

上述方案中,所述利用加密算法对所述模块文件进行加密,还包括:

获取密钥信息;

根据所述密钥信息随机生成附加信息,将所述密钥信息与所述附加信息进行组合,形成组合密钥;

根据所述组合密钥将所述模块文件的明文信息转换为密文信息;

根据所述密钥信息将所述附加信息插入所述密文信息中。

上述方案中,所述根据所述密钥信息将所述附加信息插入所述密文信息中,具体包括:

根据所述密钥信息基于混淆算法确定出所述附加信息在所述密文信息中的插入位置;

将所述附加信息插入所述密文信息中的所述插入位置。

上述方案中,所述将加密后的所述模块文件保存为数据文件之前,还包括:

利用压缩函数zlib.compress(buf,filesize)对所述加密后的所述模块文件进行压缩。

上述方案中,所述将压缩后的所述模块文件保存为数据文件,包括:

建立文件名为“xx.data”的文件夹;

调用函数fwrite(buf,filesize,1,file)将所述压缩后的所述模块文件写入所述“xx.data”的文件夹中。

本发明实施例还提供一种服务器,所述服务器包括:

读取单元,用于读取所述模块文件;

加密单元,用于利用加密算法对所述模块文件进行加密;

压缩单元,用于利用压缩算法对加密后的所述模块文件进行压缩;

存储单元,用于将压缩后的所述模块文件保存为数据文件,使得所述模块文件能以数据文件的形式隐藏在安装目录中。

本发明提供了一种保护模块文件的方法及服务器,所述方法包括:读取所述模块文件;利用加密算法对所述模块文件进行加密;将加密后的所述模块文件保存为数据文件,使得所述模块文件能以数据文件的形式隐藏在安装目录中;如此,将模块文件进行加密,即使第三方或者黑客盗取到该模块文件,也无法直接使用;并且在安装目录中将模块文件伪装成数据文件,进一步提高了模块文件的隐蔽性,增强对模块文件的保护力度,使得模块文件不能轻易被盗用,进而确保软件开发商的利益。

附图说明

图1为本发明实施例一提供的保护模块文件的方法流程示意图;

图2为本发明实施例二提供的保护模块文件的装置结构示意图。

具体实施方式

为了解决核心程序模块中的核心函数容易被第三方或者黑客盗用,导致软件开发商的利益被损坏的技术问题,本发明提供了一种保护模块文件的方法及服务器,所述方法包括:读取所述模块文件;利用加密算法对所述模块文件进行加密;将加密后的所述模块文件保存为数据文件,使得所述模块文件能以数据文件的形式隐藏在安装目录中。

下面通过附图及具体实施例对本发明的技术方案做进一步的详细说明。

实施例一

本实施例提供一种保护模块文件的方法,如图1所示,所述方法包括:

s101,读取所述模块文件。

本步骤中,当模块文件的功能编写完成之后,读取所述模块文件至系统内存,具体地:

首先调用系统库函数fopen(“xx”,“rb”)打开所述模块文件;其中,所述“xx”为模块文件名,所述“rb”为读取文件。

读取到模块文件之后,将文件指针移动至所述模块文件的尾部,获取所述模块文件的占用内存,具体程序实现如下:

fseek(file,0,seek_end);

uintfilesize=ftell(file);

当获取到所述模块文件的占用内存后,调用函数fread(buf,filesize,1,file)读取所述模块文件至系统内存中,并将所述模块文件存储至缓存buf中。

s102,利用加密算法对所述模块文件进行加密。

本步骤中,读取到整个模块文件的内容后,需要利用加密算法对整个文件进行加密,所述加密算法可以包括:tea加密算法、rsa加密算法、aes加密算法或其他加密算法,可以将模块文件加密成文字信息,为了提高破解难度,还可以将模块文件加密成图像信息或音频信息等。

当利用tea加密算法对模块文件进行加密时,具体实现如下:

tea.encrypt(buf,filesize,key);

其中,buf为读取到的整个模块文件,所述encrypt接口是tea算法的加密接口,所述key为预设的密钥信息。

当利用rsa加密算法对模块文件进行加密时,具体实现如下:

rsa.encrypt(buf,filesize,key);

其中,buf为读取到的整个模块文件,此时所述encrypt接口是rsa算法的加密接口;所述key为预设的密钥信息。

当利用aes加密算法对模块文件进行加密时,具体实现如下:

aes.encrypt(buf,filesize,key);

其中,buf为读取到的整个模块文件,此时所述encrypt接口是aes算法的加密接口;所述key为预设的密钥信息。

这里,当利用其他加密算法将模块文件加密为图像信息时,具体包括:

获取所述模块文件的明文信息;将所述明文信息转换为字符编码;将所述字符编码转换为相应的数字信息;根据第一转换规则将所述数字信息转换为至少一组颜色值;通过所述至少一组颜色值生成图像,所述图像为对所述明文信息进行加密的加密结果。

具体地,根据第一转换规则将所述数字信息转换为至少一组颜色值,包括:确定每组数字信息的数值;确定每种颜色对应的最大阶层,根据相应的数值与r颜色对应的最大阶层确定所述r颜色的颜色值,并获取第一剩余值;根据所述第一剩余值与g颜色对应最大的阶层确定所述g颜色的颜色值,并获取第二剩余值;基于所述第二剩余值确定所述b颜色的颜色值;将所述r颜色的颜色值、g颜色的颜色值及所述b颜色的颜色值进行组合,获取至少一组(r,g,b)颜色值;其中,所述r颜色为红色,所述g颜色为绿色,所述b颜色为蓝色。

这里,当通过所述至少一组颜色值生成图像之前,所述方法还包括:接收混淆数值;根据所述混淆数值随机生成相应数量的混淆色块;基于混淆算法确定所述混淆色块在所述图像中的写入位置。

而通过所述至少一组颜色值生成图像,包括:确定写入所述至少一组颜色值的第一基准点;以所述第一基准点为起始位置,基于所述混淆色块的数量及所述混淆色块在所述图像中的写入位置,将所述至少一组颜色值与所述混淆色块的颜色值依次写入所述图像中。

进一步地,基于混淆算法确定所述混淆色块在所述图像中的写入位置包括:基于所述混淆数值的数量确定每组所述写入位置的数量;确定所述写入位置的第二基准点;以所述第二基准点为起始位置,每组写入位置依次分布于两组颜色值所对应的颜色块之间。

这里,当利用其他加密算法将模块文件加密为音频信息时,具体包括:

获取模块文件的明文信息;根据第二转换规则将所述明文信息转换为至少一组音频码;通过所述至少一组音频码生成音频;所述音频为对所述明文信息进行加密的加密结果。

具体地,所述根据第二转换规则将所述明文信息转换为至少一组音频码包括:将所述明文信息转换为字符编码;将所述字符编码转换为至少一组数字信息;将所述至少一组数字信息转换为所述至少一组音频码。

所述将所述至少一组数字信息转换为至少一组音频码包括:确定每组数字信息的数值;确定所述每组数字信息中每个数字对应的音频编码;基于所述每个数字对应的音频编码及每组数字信息的数值,将所述每组数字信息转换为相应的音频编码;将相应的音频编码进行组合形成音频码。

进一步地,通过所述至少一组音频码生成音频,包括:遍历所述音频码,获取相应的音频编码,所述音频编码包括:第一音频编码及第二音频编码;将所述第一音频编码转换为第一频率,将所述第二音频编码转换为第二频率,获取频率队列;利用音频生成算法将所述频率队列生成音频。

这里,当加密算法为预设的其他加密算法时,所述利用加密算法对所述模块文件进行加密,还包括:

获取密钥信息;所述密钥是预先设定的,作为加密的口令,所述密钥可以是任意字符,比如:数字或字母等,字符的个数可以包括一个或多个;为了提高密钥的复杂性,本发明中的密钥至少包括六个字符。

当获取到密钥信息后,会基于所述密钥随机生成一附加信息,并根据所述密钥确定所生成的所述附加信息的长度,其中,所述附加信息的长度可以为密钥长度的2~3倍,且附加信息的字符可以包括:数字或字母。加密时,将所述密钥及所述附加信息进行组合,形成一组合密钥。具体地,就是将所述密钥的字符串与所述附加信息的字符串进行拼接,形成一组合密钥。

比如,当密钥信息是12345,附加信息的长度是密钥长度的2倍时,那么随机会生成一个十位的信息来作为附加信息。然后将密钥信息与随机生成的十位的信息进行拼接组合,形成一组合密钥,然后根据所述组合密钥将所述特殊模块文件的明文信息转换为密文信息。

当获取到密文信息后,根据所述密钥将所述附加信息插入所述密文信息中,实现对信息的加密。

具体地,根据所述密钥将所述附加信息插入所述密文信息包括:根据所述密钥基于混淆算法确定出所述附加信息在所述密文信息中的插入位置;将所述附加信息插入所述密文信息中的所述插入位置。

根据所述密钥基于混淆算法确定出所述附加信息在所述密文信息中的插入位置,包括;确定所述密钥的参照位;获取所述密钥参照位的字符;按照预设的第三转换规则将所述字符转换为一数值;基于所述数值确定出所述插入位置。

其中,预设的第三转换规则为将所述可以包括多种:比如将字符与十进制数值对应转换,将字符与ascii码值进行对应转换。

当将字符与ascii码值进行对应转换时,获取到密钥新后,预设密钥的参照位;获取所述密钥参照位的字符;获取所述字符对应的ascii码值;以所述ascii码值为参照值,将所述附加信息插入所述密文信息中相应值的位置之后。

这里,所述密钥的参照位可以为密钥中的任一位,比如首位或末位;当以密钥的末位设置为密钥的参照位,比如密钥信息为12345,那么就是参照位的字符就是“5”,再获取到“5”对应的ascii码为“53”,然后将附加信息插入到密文信息中的第53个字符之后的位置,返回加密后的信息,实现了对模块文件的加密;其中,如果密文信息的字符没有这么多,可以以零代替。

这样就完成了对模块文件的加密。

对所述模块文件加密完成之后,为了减小模块文件的占用内存,节省传输带宽,提高传输效率,还需利用压缩算法对加密后的所述模块文件进行压缩。

利用压缩算法对加密后的所述模块文件进行压缩的具体实现如下:

利用函数zlib.compress(buf,filesize)对所述加密后的所述模块文件进行压缩。

s103,将加密后的所述模块文件保存为数据文件。

本步骤中,为了提高模块文件的隐蔽性,使其不容易被发现,还需将压缩后的所述模块文件保存为最终发布所需的数据文件,最终将模块文件以数据文件的形式存在安装目录中。

具体地,可以调用文件读写库函数将模块文件的内存数据保存至磁盘等存储介质中,比如写入“xx.data”的文件夹中,具体程序实现如下:

file*file=fopen(“xx.data”,“wb”);

fwrite(buf,filesize,1,file);

fclose(file);

其中,所述“xx.data”为预先建立的文件夹。

实施例二

相应于实施例一,本实施例还提供一种服务器,如图2所示,所述服务器包括:读取单元21、加密单元22、压缩单元23及存储单元24;其中,

当模块文件的功能编写完成之后,所述读取单元21用于读取所述模块文件;具体地:

所述读取单元21首先调用系统库函数fopen(“xx”,“rb”)打开所述模块文件;其中,所述“xx”为模块文件名,所述“rb”为读取文件。

读取到模块文件之后,将文件指针移动至所述模块文件的尾部,获取所述模块文件的占用内存,具体程序实现如下:

fseek(file,0,seek_end);

uintfilesize=ftell(file);

当获取到所述模块文件的占用内存后,调用函数fread(buf,filesize,1,file)读取所述模块文件至系统内存中,并将所述模块文件存储至缓存buf中。

当读取单元21读取到整个模块文件的内容后,所述加密单元22用于利用加密算法对所述模块文件进行加密;所述加密算法可以包括:tea加密算法、rsa加密算法、aes加密算法或其他加密算法,可以将模块文件加密成文字信息,为了提高破解难度,还可以将模块文件加密成图像信息或音频信息等。

当所述加密单元22利用tea加密算法对模块文件进行加密时,具体实现如下:

tea.encrypt(buf,filesize,key);

其中,buf为读取到的整个模块文件,所述encrypt接口是tea算法的加密接口,所述key为预设的密钥信息。

当所述加密单元22利用rsa加密算法对模块文件进行加密时,具体实现如下:

rsa.encrypt(buf,filesize,key);

其中,buf为读取到的整个模块文件,此时所述encrypt接口是rsa算法的加密接口;所述key为预设的密钥信息。

当所述加密单元22利用aes加密算法对模块文件进行加密时,具体实现如下:

aes.encrypt(buf,filesize,key);

其中,buf为读取到的整个模块文件,此时所述encrypt接口是aes算法的加密接口;所述key为预设的密钥信息。

这里,当所述加密单元22利用其他加密算法将模块文件加密为图像信息时,具体包括:

获取所述模块文件的明文信息;将所述明文信息转换为字符编码;将所述字符编码转换为相应的数字信息;根据第一转换规则将所述数字信息转换为至少一组颜色值;通过所述至少一组颜色值生成图像,所述图像即为对所述明文信息进行加密的加密结果。

具体地,根据第一转换规则将所述数字信息转换为至少一组颜色值,包括:确定每组数字信息的数值;确定每种颜色对应的最大阶层,根据相应的数值与r颜色对应的最大阶层确定所述r颜色的颜色值,并获取第一剩余值;根据所述第一剩余值与g颜色对应最大的阶层确定所述g颜色的颜色值,并获取第二剩余值;基于所述第二剩余值确定所述b颜色的颜色值;将所述r颜色的颜色值、g颜色的颜色值及所述b颜色的颜色值进行组合,获取至少一组(r,g,b)颜色值;其中,所述r颜色为红色,所述g颜色为绿色,所述b颜色为蓝色。

这里,当通过所述至少一组颜色值生成图像之前,所述方法还包括:接收混淆数值;根据所述混淆数值随机生成相应数量的混淆色块;基于混淆算法确定所述混淆色块在所述图像中的写入位置。

而通过所述至少一组颜色值生成图像,包括:确定写入所述至少一组颜色值的第一基准点;以所述第一基准点为起始位置,基于所述混淆色块的数量及所述混淆色块在所述图像中的写入位置,将所述至少一组颜色值与所述混淆色块的颜色值依次写入所述图像中。

进一步地,基于混淆算法确定所述混淆色块在所述图像中的写入位置包括:基于所述混淆数值的数量确定每组所述写入位置的数量;确定所述写入位置的第二基准点;以所述第二基准点为起始位置,每组写入位置依次分布于两组颜色值所对应的颜色块之间。

这里,当所述加密单元22利用其他加密算法将模块文件加密为音频信息时,具体包括:

获取模块文件的明文信息;根据第二转换规则将所述明文信息转换为至少一组音频码;通过所述至少一组音频码生成音频;所述音频即为对所述明文信息进行加密的加密结果。

具体地,所述根据第二转换规则将所述明文信息转换为至少一组音频码包括:将所述明文信息转换为字符编码;将所述字符编码转换为至少一组数字信息;将所述至少一组数字信息转换为所述至少一组音频码。

所述将所述至少一组数字信息转换为至少一组音频码包括:确定每组数字信息的数值;确定所述每组数字信息中每个数字对应的音频编码;基于所述每个数字对应的音频编码及每组数字信息的数值,将所述每组数字信息转换为相应的音频编码;将相应的音频编码进行组合形成音频码。

进一步地,通过所述至少一组音频码生成音频,包括:遍历所述音频码,获取相应的音频编码,所述音频编码包括:第一音频编码及第二音频编码;将所述第一音频编码转换为第一频率,将所述第二音频编码转换为第二频率,获取频率队列;利用音频生成算法将所述频率队列生成音频。

当所述加密单元22利用其他加密算法对所述模块文件进行加密时,利用加密算法对整个文件进行加密,还包括:

获取所述密钥信息;所述密钥是预先设定的,作为加密的口令,所述密钥可以是任意字符,比如:数字或字母等,字符的个数可以包括一个或多个;为了提高密钥的复杂性,本发明中的密钥至少包括六个字符。

当获取到密钥信息后,会基于所述密钥随机生成一附加信息,并根据所述密钥确定所生成的所述附加信息的长度,其中,所述附加信息的长度可以为密钥长度的2~3倍,且附加信息的字符可以包括:数字或字母。加密时,将所述密钥及所述附加信息进行组合,形成一组合密钥。具体地,就是将所述密钥的字符串与所述附加信息的字符串进行拼接,形成一组合密钥。

比如,当密钥信息是12345,附加信息的长度是密钥长度的2倍时,那么随机会生成一个十位的信息来作为附加信息。然后将密钥信息与随机生成的十位的信息进行拼接组合,形成一组合密钥,然后根据所述组合密钥将所述特殊模块文件的明文信息转换为密文信息。

当获取到密文信息后,根据所述密钥将所述附加信息插入所述密文信息中,实现对信息的加密。

具体地,根据所述密钥将所述附加信息插入所述密文信息包括:根据所述密钥基于混淆算法确定出所述附加信息在所述密文信息中的插入位置;将所述附加信息插入所述密文信息中的所述插入位置。

根据所述密钥基于混淆算法确定出所述附加信息在所述密文信息中的插入位置,包括;确定所述密钥的参照位;获取所述密钥参照位的字符;按照预设的第三转换规则将所述字符转换为一数值;基于所述数值确定出所述插入位置。

其中,预设的第三转换规则为将所述可以包括多种:比如将字符与十进制数值对应转换,将字符与ascii码值进行对应转换。

当将字符与ascii码值进行对应转换时,获取到密钥新后,预设密钥的参照位;获取所述密钥参照位的字符;获取所述字符对应的ascii码值;以所述ascii码值为参照值,将所述附加信息插入所述密文信息中相应值的位置之后。

这里,所述密钥的参照位可以为密钥中的任一位,比如首位或末位;当以密钥的末位设置为密钥的参照位,比如密钥信息为12345,那么就是参照位的字符就是“5”,再获取到“5”对应的ascii码为“53”,然后将附加信息插入到密文信息中的第53个字符之后的位置,返回加密后的信息,实现了对模块文件的加密;其中,如果密文信息的字符没有这么多,可以以零代替。

这样所述加密单元22就完成了对模块文件的加密。

当所述加密单元22所述模块文件加密完成之后,为了减小模块文件的占用内存,节省传输带宽,提高传输效率,压缩单元23用于利用压缩算法对加密后的所述模块文件进行压缩。

具体地,所述压缩单元23利用压缩算法对加密后的所述模块文件进行压缩的具体实现如下:

利用函数zlib.compress(buf,filesize)对所述加密后的所述模块文件进行压缩。

当压缩单元23将模块文件压缩完毕之后,为了提高模块文件的隐蔽性,使其不容易被发现,所述存储单元24还需将压缩后的所述模块文件保存为最终发布所需的数据文件,最终将模块文件以数据文件的形式存在安装目录中。

具体地,所述存储单元24可以调用文件读写库函数将模块文件的内存数据保存至磁盘等存储介质中,比如写入“xx.data”的文件夹中,具体程序实现如下:

file*file=fopen(“xx.data”,“wb”);

fwrite(buf,filesize,1,file);

fclose(file);

其中,所述“xx.data”为预先建立的文件夹。

本发明实施例提供的保护模块文件的方法及服务器能带来的有益效果至少是:

本发明提供了一种保护模块文件的方法及服务器,所述方法包括:读取所述模块文件;利用加密算法对所述模块文件进行加密;利用压缩算法对加密后的所述模块文件进行压缩;将压缩后的所述模块文件保存为数据文件,使得所述模块文件能以数据文件的形式隐藏在安装目录中;如此,将模块文件进行加密成文字信息、图像信息或音频信息,提高了模块文件的安全性,即使第三方或者黑客盗取到该模块文件,由于没有破解方法也无法使用;并且在安装目录中将模块文件伪装成数据文件,进一步提高了模块文件的隐蔽性,增强对模块文件的保护力度,使得模块文件不能轻易被盗用,进而确保软件开发商的利益。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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