代码加密方法、装置、计算机装置及存储介质与流程

文档序号:17003834发布日期:2019-03-02 01:55阅读:161来源:国知局
代码加密方法、装置、计算机装置及存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种代码加密方法、装置、计算机装置及存储介质。



背景技术:

当软件发布以后,在软件公开后使用过程中,软件可能通过各种破解技术被破解,在软件被破解之后,字符串常量(例如密钥)会被暴露。的那个字符串常量暴露之后,可能被黑客或者不法分子恶意利用,为软件的使用者和开发者带来信息安全等方面的风险。



技术实现要素:

鉴于以上内容,有必要提供一种代码加密方法、装置、计算机装置及存储介质,能够在代码开发过程中,及时的对字符串常量进行加密,提高代码的保密性,降低软件破解所带来的风险。

本发明提供一种代码加密方法,所述方法包括:

在接收到向版本控制系统提交代码的指令后,扫描所述指令指示提交的目标代码,判断所述目标代码中是否包含字符串常量;

若所述目标代码中包含字符串常量,对所述目标代码中包含的字符串常量进行标识;

对标识的字符串常量进行混淆处理,得到混淆字符串;

将所述目标字符串中标识的字符串常量替换为所述混淆字符串,向所述版本控制系统提交所述目标代码。

在本发明优选实施中,所述若所述目标代码中包含字符串常量,对所述目标代码中包含的字符串常量进行标识包括:

若所述目标代码中包含字符串常量,获取所述目标代码中的待处理字符串常量;

获取所述待处理字符串常量中每个字符串常量的长度;

根据所述待处理字符串常量中每个字符串常量的长度对所述待处理字符串常量中每个字符串常量进行长度标识;

则所述对标识的字符串常量进行混淆处理包括:

对不同长度标识的字符串常量进行不同的混淆处理。

在本发明优选实施例中,所述若所述目标代码中包含字符串常量,对所述目标代码中包含的字符串常量进行标识包括:

若所述目标代码中包含字符串常量,获取所述目标代码中的待处理字符串常量;

确定所述待处理字符串常量中每个字符串常量的处理优先级;

根据所述待处理字符串常量中每个字符串常量的处理优先级对所述待处理字符串常量中每个字符串常量进行优先级标识;

则所述对标识的字符串常量进行混淆处理包括:

对不同优先级标识的字符串常量进行不同的混淆处理。

在本发明优选实施中,所述方法还包括:

若所述目标代码中包含字符串常量,发送加密提醒。

在本发明优选实施中,所述方法还包括:

若接收到针对所述加密提醒的确认加密的指令,显示混淆方式选取页面;

根据用户选取的混淆方式对标识的字符串常量进行混淆处理。

在本发明优选实施例中,所述对所述目标代码中包含的字符串常量进行标识包括:

对所述目标代码中相同的字符串常量通过相同的标识符进行标识。

在本发明优选实施例中,所述对所述目标代码中包含的字符串常量进行标识包括:

对所述目标代码中相同功能模块内相同的字符串常量通过相同的标识符进行标识。

本发明提供还一种代码加密装置,所述装置包括:

判断模块,用于在接收到向版本控制系统提交代码的指令后,扫描所述指令指示提交的目标代码,判断所述目标代码中是否包含字符串常量;

标识模块,用于若所述目标代码中包含字符串常量,对所述目标代码中包含的字符串常量进行标识;

处理模块,用于对标识的字符串常量进行混淆处理,得到混淆字符串;

提交模块,用于将所述目标字符串中标识的字符串常量替换为所述混淆字符串,向所述版本控制系统提交所述目标代码。

在本发明优选实施例中,所述标识模块具体用于:

若所述目标代码中包含字符串常量,获取所述目标代码中的待处理字符串常量;

获取所述待处理字符串常量中每个字符串常量的长度;

根据所述待处理字符串常量中每个字符串常量的长度对所述待处理字符串常量中每个字符串常量进行长度标识;

则所述处理模块对标识的字符串常量进行混淆处理包括:

对不同长度标识的字符串常量进行不同的混淆处理。

在本发明优选实施例中,所述标识模块具体用于:

若所述目标代码中包含字符串常量,获取所述目标代码中的待处理字符串常量;

确定所述待处理字符串常量中每个字符串常量的处理优先级;

根据所述待处理字符串常量中每个字符串常量的处理优先级对所述待处理字符串常量中每个字符串常量进行优先级标识;

则所述处理模块对标识的字符串常量进行混淆处理包括:

对不同优先级标识的字符串常量进行不同的混淆处理。

在本发明优选实施例中,所述装置还包括:

提醒模块,用于若所述目标代码中包含字符串常量,发送加密提醒。

在本发明优选实施例中,所述提醒模块还用于:

若接收到针对所述加密提醒的确认加密的指令,显示混淆方式选取页面;

根据用户选取的混淆方式对标识的字符串常量进行混淆处理。

在本发明优选实施例中,所述处理模块对所述目标代码中包含的字符串常量进行标识包括:

对所述目标代码中相同的字符串常量通过相同的标识符进行标识。

在本发明优选实施例中,所述述处理模块对所述目标代码中包含的字符串常量进行标识包括:

对所述目标代码中相同功能模块内相同的字符串常量通过相同的标识符进行标识。

本发明还提供一种计算机装置,所述计算机装置包括存储器及处理器,所述存储器用于存储至少一个指令,所述处理器用于执行所述至少一个指令以实现任意实施例中所述的代码加密方法。

本发明还提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有至少一个指令,所述至少一个指令被处理器执行时实现任意实施例中所述的代码加密方法。

由以上技术方案看出,本发明通过在接收到向版本控制系统提交代码的指令后,扫描所述指令指示提交的目标代码,判断所述目标代码中是否包含字符串常量;若所述目标代码中包含字符串常量,对所述目标代码中包含的字符串常量进行标识;对标识的字符串常量进行混淆处理,得到混淆字符串;将所述目标字符串中标识的字符串常量替换为所述混淆字符串,向所述版本控制系统提交所述目标代码。由于开发过程中,通常会使用版本控制系统进行代码的管理,因此,在向版本控制系统提交代码时,就判断其是否包含字符串常量,并对其包含的字符串常量进行混淆处理,以对代码中可能会暴露的内容进行加密。使得在代码开发过程中,及时的对字符串常量进行加密,提高代码的保密性,降低软件破解所带来的风险。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1是本发明实施例提供的一种代码加密方法的流程图;

图2是本发明实施例提供的代码加密装置的功能模块图;

图3是本发明实现代码加密方法的较佳实施例的计算机装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

如图1所示,图1为本发明实施例提供的一种代码加密方法的流程图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。

s11,在接收到向版本控制系统提交代码的指令后,扫描所述指令指示提交的目标代码,判断所述目标代码中是否包含字符串常量。

本方案所述的代码加密方法用于在向版本控制系统进行代码提交时对代码进行加密。

其中,版本控制系统是进行代码管理和多人协作开发的一种应用软件。例如,版本控制系统为git或者是svn。则通过git可以对代码进行管理。例如,某一应用软件通过git来保存其1.0版本的代码,当该应用软件升级之后,可以在git中保存其2.0版本的代码。同时,在开发该应用软件时,可以由a、b、c、d四个开发人员分别开发不同的模块,通过git来集中管理每个开发人员的代码。

上述向版本控制系统提交代码的指令可以用于向版本控制系统的服务器提交代码,也可以用于在安装版本控制系统的客户端上向本地客户端提交代码。因此,在接收到向版本控制系统提交代码的指令之后,可以获取要提交的代码。上述目标代码是指要向版本控制系统提交的代码。

通常,在代码中,在双引号“”内的字符序列或者转义字符序列为字符串常量,字符串常量标识不可变化的固定数值。例如,“howdoyoudo”,“javalanguage”,“$123.78”,“a\\n”为字符串正常量。

因此,在扫描目标代码时,可以通过检测其中是否存在双引号“”形式的内容来判断目标代码中是否包含字符串常量。例如,若目标代码中包括双引号“”形式的内容,则判断目标代码中包含字符串常量。

s12:若所述目标代码中包含字符串常量,对所述目标代码中包含的字符串常量进行标识。

当目标代码中包含字符串常量时,可以对每个字符串常量并进行标识。具体的,可以以数字或者字母等标识符进行标识。

例如,目标代码中包含以下字符串常量:string1”,“string2”,“xyz”,“#201867”,“a\\n”,则将字符串分别标识为a1,a2,a3,a4,a5。

在具体实施时,可以将目标代码中包含的全部字符串进行标识,或者是对其中部分字符串进行标识。

进一步的,在本发明另一实施例中,所述对所述目标代码中包含的字符串常量进行标识包括:

对所述目标代码中相同的字符串常量通过相同的标识符进行标识。

在进行字符串常量标识时可以将相同的字符串常量通过相同的标识符进行标识。则后续在做处理时,对相同的字符串进行同样的混淆,将混淆后的进行批量替换,提高加密的效率。

进一步的,在本发明另一实施例中,所述对所述目标代码中包含的字符串常量进行标识包括:

对所述目标代码中相同功能模块内相同的字符串常量通过相同的标识符进行标识。

在进行字符串常量进行标识时还可以将相同功能模块内相同的字符串通常量通过相同的标识符进行标识。则在相同功能内用同样的标识符进行标识,可后续替换时批量替换,从而提高处理效率,同时,对于不同功能模块的相同字符串混淆后也不相同,在提高加密效率的基础上,提高破解密码的难度。

s13:对标识的字符串常量进行混淆处理,得到混淆字符串。

其中,对标识的字符串常量进行混淆处理可以是通过加密函数将该字符串常量进行加密,则加密后的字符串可以称为混淆字符串。

例如,对于字符串常量“xyz”可以进行base64加密,则字符串常量“xyz”加密后的混淆字符串为“ehl6”。

进一步的,在本发明另一实施例中,所述若所述目标代码中包含字符串常量,对所述目标代码中包含的字符串常量进行标识包括:

若所述目标代码中包含字符串常量,获取所述目标代码中的待处理字符串常量;

获取所述待处理字符串常量中每个字符串常量的长度;

根据所述待处理字符串常量中每个字符串常量的长度对所述待处理字符串常量中每个字符串常量进行长度标识;

则步骤s13所述对标识的字符串常量进行混淆处理包括:

对不同长度标识的字符串常量进行不同的混淆处理。

其中,上述根据所述待处理字符串常量中每个字符串常量的长度对所述待处理字符串常量中每个字符串常量进行长度标识具体是:将长度超过预设长度的长字符串常量与长度小于预设长度的短字符串常量区分标识。然后,在对标识的字符串进行混淆处理时,针对长字符串常量与短字符串常量进行不同的混淆处理。

具体的,可以针对长字符串选取用于大数据量的加密算法加密,针对短字符串常量选取用于非大数据量的加密算法加密。

例如,对于长字符串常量用des加密算法,得到混淆字符串;对于短字符串常量用rsa加密算法加密,得到混淆字符串。

由于在进行混淆处理时,若对不同长度的字符串常量与短字符串常量都用进行相同的混淆处理,可能使得长字符串常量更长,代码不够简洁。因此,在本实施例中,针对不同长度字符串常量进行不同的混淆处理,可以提高代码的可读性。

进一步的,在本发明另一实施例中,所述若所述目标代码中包含字符串常量,对所述目标代码中包含的字符串常量进行标识包括:

若所述目标代码中包含字符串常量,获取所述目标代码中的待处理字符串常量;

确定所述待处理字符串常量中每个字符串常量的处理优先级;

根据所述待处理字符串常量中每个字符串常量的处理优先级对所述待处理字符串常量中每个字符串常量进行优先级标识;

则步骤s13所述对标识的字符串常量进行混淆处理包括:

对不同优先级标识的字符串常量进行不同的混淆处理。

其中,上述字符串常量的处理优先级可以为预先设定的或者根据预定的规则来识别确定。例如,当字符串常量包含网址时,或者字符串常量包含产品的版本信息时,确定该字符串常量的处理优先级为高。

具体的,对处理优先级高的字符串常量可以采用加密强度高的加密算法进行加密,对处理优先级低的字符串常量可以采用加密强度普通的加密算法进行加密。

例如,对于优先级高的字符串常量用aes加密算法,得到混淆字符串;对于优先级低的字符串常量用dsa加密算法加密,得到混淆字符串。

在本实施例中,针对字符串常量的处理优先级进行不同的混淆处理,可以对重要性较高的代码进行更好的保护,提高代码破解的难度。并且,由于加密强度高的加密算法进行加密时,加密速度可能会更长,因此针对不同重要性的字符串常量进行不同的混淆处理可以避免过长的加密的处理时间,在提高安全性的情况下更快速的得到混淆字符串。

s14,将所述目标字符串中标识的字符串常量替换为所述混淆字符串,向所述版本控制系统提交所述目标代码。

在得到混淆字符串之后,将目标代码中标识的字符串常量替换为混淆字符串,具体的,是将目标代码中的标识的每个字符串常量替换为其对应的混淆字符串。

在向版本控制系统提交目标代码之后,版本控制系统中可以保存提交的目标代码。

例如,若目标代码中包含:stringstr=“xyz”;对其中的字符串常量“xyz”通过某函数进行处理,可以得到stringstr=encode(xyz);若encode函数表示对字符串常量进行base64加密,则stringstr=“ehl6”。在向git提交该目标代码时,目标代码中的stringstr=“xyz”部分,可以变为stringstr=encode(xyz)进行提交。同时,还可以一并提交encode函数的定义,以及用于解密encode的函数,则在其他开发人员使用git时协同开发时,可以调用解密函数去除混淆,使得开发过程中其他开发人员知晓加密字符串的内容。

通常,在将目标代码打包成可执行文件(例如,exe文件或apk文件等)时,可以从版本控制系统中获取目标代码并通过编译工具进行打包,进而再将执行文发布。则其他人若破解了该可执行文件之后,由于字符串常量已经进行了混淆处理,因此无法了解字符串常量的内容,提高了目标代码的保密性。

进一步的,在本发明其他实施例中,还可以通过以下方式进行加密。具体的,本发明所述的方法还包括:

若所述目标代码中包含字符串常量,发送加密提醒。

具体的,发送加密提醒可以是在版本控制系统的客户端进行提醒。由于版本控制系统的客户端对于开发人员是可见的,因此,可以使开发人员及时的了解到目标代码中包含字符串常量,以使开发人员可以根据需要主动的进行代码混淆处理。

进一步的,所述方法还包括:

若接收到针对所述加密提醒的确认加密的指令,显示混淆方式选取页面;

根据用户选取的混淆方式对标识的字符串常量进行混淆处理。

上述针对所述加密提醒的确认加密的指令表明用户确认对目标代码包含的字符串常量进行加密。

上述混淆方式选取页面可以是在版本控制系统的客户端进行显示。例如,在版本控制系统的客户端显示三种混淆方式,以使用户进行选取;当获取到用户选取的混淆为第二种混淆方式时,通过第二种混淆方式对标记的字符串常量进行混淆处理。

通过本实施例,可以显示预设的混淆方式,并根据用户选取的混淆方式对标识的字符串常量进行混淆处理。

本发明提供的代码加密方法在接收到向版本控制系统提交代码的指令后,扫描所述指令指示提交的目标代码,判断所述目标代码中是否包含字符串常量;若所述目标代码中包含字符串常量,对所述目标代码中包含的字符串常量进行标识;对标识的字符串常量进行混淆处理,得到混淆字符串;将所述目标字符串中标识的字符串常量替换为所述混淆字符串,向所述版本控制系统提交所述目标代码。由于开发过程中,通常会使用版本控制系统进行代码的管理,因此,在向版本控制系统提交代码时,就判断其是否包含字符串常量,并对其包含的字符串常量进行混淆处理,以对代码中可能会暴露的内容进行加密。使得在代码开发过程中,及时的对字符串常量进行加密,提高代码的保密性,降低软件破解所带来的风险。

如图2所示,图2为本发明实施例提供的代码加密装置的功能模块图。所述代码加密装置包括判断模块210、标识模块220、处理模块230和提交模块240。本发明所称的模块是指一种能够被计算机装置的处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在计算机装置的存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。

判断模块210,用于在接收到向版本控制系统提交代码的指令后,扫描所述指令指示提交的目标代码,判断所述目标代码中是否包含字符串常量。

本方案所述的代码加密装置用于在向版本控制系统进行代码提交时对代码进行加密。

其中,版本控制系统是进行代码管理和多人协作开发的一种应用软件。例如,版本控制系统为git或者是svn。则通过git可以对代码进行管理。例如,某一应用软件通过git来保存其1.0版本的代码,当该应用软件升级之后,可以在git中保存其2.0版本的代码。同时,在开发该应用软件时,可以由a、b、c、d四个开发人员分别开发不同的模块,通过git来集中管理每个开发人员的代码。

上述向版本控制系统提交代码的指令可以用于向版本控制系统的服务器提交代码,也可以用于在安装版本控制系统的客户端上向本地客户端提交代码。因此,在接收到向版本控制系统提交代码的指令之后,可以获取要提交的代码。上述目标代码是指要向版本控制系统提交的代码。

通常,在代码中,在双引号“”内的字符序列或者转义字符序列为字符串常量,字符串常量标识不可变化的固定数值。例如,“howdoyoudo”,“javalanguage”,“$123.78”,“a\\n”为字符串正常量。

因此,在扫描目标代码时,可以通过检测其中是否存在双引号“”形式的内容来判断目标代码中是否包含字符串常量。例如,若目标代码中包括双引号“”形式的内容,则判断目标代码中包含字符串常量。

标识模块220,用于若所述目标代码中包含字符串常量,对所述目标代码中包含的字符串常量进行标识。

当目标代码中包含字符串常量时,可以对每个字符串常量并进行标识。具体的,可以以数字或者字母等标识符进行标识。

例如,目标代码中包含以下字符串常量:string1”,“string2”,“xyz”,“#201867”,“a\\n”,则将字符串分别标识为a1,a2,a3,a4,a5。

在具体实施时,可以将目标代码中包含的全部字符串进行标识,或者是对其中部分字符串进行标识。

进一步的,在本发明另一实施例中,所述标识模块220对所述目标代码中包含的字符串常量进行标识包括:

对所述目标代码中相同的字符串常量通过相同的标识符进行标识。

在进行字符串常量标识时可以将相同的字符串常量通过相同的标识符进行标识。则后续在做处理时,对相同的字符串进行同样的混淆,将混淆后的进行批量替换,提高加密的效率。

进一步的,在本发明另一实施例中,所述标识模块220对所述目标代码中包含的字符串常量进行标识包括:

对所述目标代码中相同功能模块内相同的字符串常量通过相同的标识符进行标识。

在进行字符串常量进行标识时还可以将相同功能模块内相同的字符串通常量通过相同的标识符进行标识。则在相同功能内用同样的标识符进行标识,可后续替换时批量替换,从而提高处理效率,同时,对于不同功能模块的相同字符串混淆后也不相同,在提高加密效率的基础上,提高破解密码的难度。

处理模块230,用于对标识的字符串常量进行混淆处理,得到混淆字符串。

其中,对标识的字符串常量进行混淆处理可以是通过加密函数将该字符串常量进行加密,则加密后的字符串可以称为混淆字符串。

例如,对于字符串常量“xyz”可以进行base64加密,则字符串常量“xyz”加密后的混淆字符串为“ehl6”。

进一步的,在本发明另一实施例中,所述标识模块具体用于:

若所述目标代码中包含字符串常量,获取所述目标代码中的待处理字符串常量;

获取所述待处理字符串常量中每个字符串常量的长度;

根据所述待处理字符串常量中每个字符串常量的长度对所述待处理字符串常量中每个字符串常量进行长度标识;

则处理模块230对标识的字符串常量进行混淆处理包括:

对不同长度标识的字符串常量进行不同的混淆处理。

其中,上述根据所述待处理字符串常量中每个字符串常量的长度对所述待处理字符串常量中每个字符串常量进行长度标识具体是:将长度超过预设长度的长字符串常量与长度小于预设长度的短字符串常量区分标识。然后,在对标识的字符串进行混淆处理时,针对长字符串常量与短字符串常量进行不同的混淆处理。

具体的,可以针对长字符串选取用于大数据量的加密算法加密,针对短字符串常量选取用于非大数据量的加密算法加密。

例如,对于长字符串常量用des加密算法,得到混淆字符串;对于短字符串常量用rsa加密算法加密,得到混淆字符串。

由于在进行混淆处理时,若对不同长度的字符串常量与短字符串常量都用进行相同的混淆处理,可能使得长字符串常量更长,代码不够简洁。因此,在本实施例中,针对不同长度字符串常量进行不同的混淆处理,可以提高代码的可读性。

进一步的,在本发明另一实施例中,所述标识模块具体用于:

若所述目标代码中包含字符串常量,获取所述目标代码中的待处理字符串常量;

确定所述待处理字符串常量中每个字符串常量的处理优先级;

根据所述待处理字符串常量中每个字符串常量的处理优先级对所述待处理字符串常量中每个字符串常量进行优先级标识;

则处理模块230对标识的字符串常量进行混淆处理包括:

对不同优先级标识的字符串常量进行不同的混淆处理。

其中,上述字符串常量的处理优先级可以为预先设定的或者根据预定的规则来识别确定。例如,当字符串常量包含网址时,或者字符串常量包含产品的版本信息时,确定该字符串常量的处理优先级为高。

具体的,对处理优先级高的字符串常量可以采用加密强度高的加密算法进行加密,对处理优先级低的字符串常量可以采用加密强度普通的加密算法进行加密。

例如,对于优先级高的字符串常量用aes加密算法,得到混淆字符串;对于优先级低的字符串常量用dsa加密算法加密,得到混淆字符串。

在本实施例中,针对字符串常量的处理优先级进行不同的混淆处理,可以对重要性较高的代码进行更好的保护,提高代码破解的难度。并且,由于加密强度高的加密算法进行加密时,加密速度可能会更长,因此针对不同重要性的字符串常量进行不同的混淆处理可以避免过长的加密的处理时间,在提高安全性的情况下更快速的得到混淆字符串。

提交模块240,用于将所述目标字符串中标识的字符串常量替换为所述混淆字符串,向所述版本控制系统提交所述目标代码。

在得到混淆字符串之后,将目标代码中标识的字符串常量替换为混淆字符串,具体的,是将目标代码中的标识的每个字符串常量替换为其对应的混淆字符串。

在向版本控制系统提交目标代码之后,版本控制系统中可以保存提交的目标代码。

例如,若目标代码中包含:stringstr=“xyz”;对其中的字符串常量“xyz”通过某函数进行处理,可以得到stringstr=encode(xyz);若encode函数表示对字符串常量进行base64加密,则stringstr=“ehl6”。在向git提交该目标代码时,目标代码中的stringstr=“xyz”部分,可以变为stringstr=encode(xyz)进行提交。同时,还可以一并提交encode函数的定义,以及用于解密encode的函数,则在其他开发人员使用git时协同开发时,可以调用解密函数去除混淆,使得开发过程中其他开发人员知晓加密字符串的内容。

通常,在将目标代码打包成可执行文件(例如,exe文件或apk文件等)时,可以从版本控制系统中获取目标代码并通过编译工具进行打包,进而再将执行文发布。则其他人若破解了该可执行文件之后,由于字符串常量已经进行了混淆处理,因此无法了解字符串常量的内容,提高了目标代码的保密性。

进一步的,在本发明其他实施例中,还可以通过以下方式进行加密。具体的,本发明所述的装置还包括提醒模块。

提醒模块,用于若所述目标代码中包含字符串常量,发送加密提醒。

具体的,发送加密提醒可以是在版本控制系统的客户端进行提醒。由于版本控制系统的客户端对于开发人员是可见的,因此,可以使开发人员及时的了解到目标代码中包含字符串常量,以使开发人员可以根据需要主动的进行代码混淆处理。

进一步的,所述提醒模块还用于:若接收到针对所述加密提醒的确认加密的指令,显示混淆方式选取页面;根据用户选取的混淆方式对标识的字符串常量进行混淆处理。

上述针对所述加密提醒的确认加密的指令表明用户确认对目标代码包含的字符串常量进行加密。

上述混淆方式选取页面可以是在版本控制系统的客户端进行显示。例如,在版本控制系统的客户端显示三种混淆方式,以使用户进行选取;当获取到用户选取的混淆为第二种混淆方式时,通过第二种混淆方式对标记的字符串常量进行混淆处理。

通过本实施例,可以显示预设的混淆方式,并根据用户选取的混淆方式对标识的字符串常量进行混淆处理。

本发明提供的代码加密装置通过判断模块在接收到向版本控制系统提交代码的指令后,扫描所述指令指示提交的目标代码,判断所述目标代码中是否包含字符串常量;若所述目标代码中包含字符串常量,标识对所述目标代码中包含的字符串常量进行标识;处理模块对标识的字符串常量进行混淆处理,得到混淆字符串;提交模块将所述目标字符串中标识的字符串常量替换为所述混淆字符串,向所述版本控制系统提交所述目标代码。由于开发过程中,通常会使用版本控制系统进行代码的管理,因此,在向版本控制系统提交代码时,就判断其是否包含字符串常量,并对其包含的字符串常量进行混淆处理,以对代码中可能会暴露的内容进行加密。使得在代码开发过程中,及时的对字符串常量进行加密,提高代码的保密性,降低软件破解所带来的风险。

上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。

如图3所示,图3是本发明实现代码加密方法的较佳实施例的计算机装置的结构示意图。所述计算机装置包括至少一个发送装置31、至少一个存储器32、至少一个处理器33、至少一个接收装置34以及至少一个通信总线。其中,所述通信总线用于实现这些组件之间的连接通信。

所述计算机装置是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程门阵列(field-programmablegatearray,fpga)、数字处理器(digitalsignalprocessor,dsp)、嵌入式设备等。所述计算机装置还可包括网络设备和/或用户设备。其中,所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(cloudcomputing)的由大量主机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。

所述计算机装置可以是,但不限于任何一种可与用户通过键盘、触摸板或声控设备等方式进行人机交互的电子产品,例如,平板电脑、智能手机、监控设备等终端。

所述计算机装置所处的网络包括,但不限于互联网、广域网、城域网、局域网、虚拟专用网络(virtualprivatenetwork,vpn)等。

其中,所述接收装置34和所述发送装置31可以是有线发送端口,也可以为无线设备,例如包括天线装置,用于与其他设备进行数据通信。

所述存储器32用于存储程序代码。所述存储器32可以是集成电路中没有实物形式的具有存储功能的电路,如ram(random-accessmemory,随机存取存储器)、fifo(firstinfirstout,先进先出存储器)等。或者,所述存储器32也可以是具有实物形式的存储器,如内存条、tf卡(trans-flashcard)、智能媒体卡(smartmediacard)、安全数字卡(securedigitalcard)、快闪存储器卡(flashcard)等储存设备等等。

所述处理器33可以包括一个或者多个微处理器、数字处理器。所述处理器33可调用存储器32中存储的程序代码以执行相关的功能。例如,图3中所述的各个单元是存储在所述存储器32中的程序代码,并由所述处理器33所执行,以实现一种代码加密方法。所述处理器33又称中央处理器(cpu,centralprocessingunit),是一块超大规模的集成电路,是运算核心(core)和控制核心(controlunit)。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。

最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

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