程序源码加密方法、运行方法、装置、电子设备及介质与流程

文档序号:33192341发布日期:2023-02-04 09:06阅读:44来源:国知局
程序源码加密方法、运行方法、装置、电子设备及介质与流程

1.本技术涉及计算机技术领域,具体而言,涉及一种程序源码加密方法、运行方法、装置、电子设备及介质。


背景技术:

2.某些应用程序在客户端进行安装时会在安装目录发布依赖包,这些依赖包可以支持应用程序的运行。然而,由于可以通过某种方式从依赖包中获取源码文件,从而导致程序源码存在泄漏的风险。
3.目前防止程序源码泄漏的方法主要是通过增加代码复杂度,增加无用代码、对代码进行压缩,切断代码间关系的方法降低代码可读性和可调试性。
4.然而,这些方法会导致程序运行时解析时间增长、运行效率低下的问题。


技术实现要素:

5.本技术实施例的目的在于提供一种程序源码加密方法、程序运行方法、装置、电子设备及可读存储介质,用以兼顾程序源码的安全性和程序运行效率。
6.本技术实施例提供了一种程序源码加密方法,包括:生成第一密钥;生成密钥对,所述密钥对包括公钥和私钥;采用所述密钥对中的公钥对源码文件进行加密;采用所述第一密钥对所述密钥对中的私钥进行加密,生成加密私钥;生成应用程序安装包,所述应用程序安装包包括加密的源码文件所述加密私钥及按照预设放置规则分布到所述加密的源码文件中的第一密钥;
7.在上述实现过程中,通过公钥对源码文件加密,降低了源码文件泄密的风险。通过采用第一密钥对私钥加密,生成加密私钥,提高了私钥传输过程中的安全性。通过将第一密钥根据预设放置规则分布到加密源码文件中,提高了获取第一密钥的难度,从而保证加密私钥不被轻易破解,进而保证源码的安全性。由于使用公钥对源码整体进行加密处理,不改变源码本身的代码,没有增加源码的复杂度,从而在程序运行需要解析源码时,解析速度较快,能够保证程序运行效率。
8.进一步地,所述生成第一密钥,包括:生成随机字符串;使用加密算法对随机字符串循环加密预设次数,得到所述第一密钥。
9.在上述实现过程中,通过加密算法对随机字符串进行预设次数的循环加密,可以更加有效地增强随机字符串的随机性,使得采用第一密钥进行加密的内容更加难以被破解。
10.进一步地,所述预设次数为当前时间戳后两位数字。
11.在上述实现过程中,由于加密次数也是破解加密算法的重要参数,因此,采用时间戳的后两位数字作为循环加密次数,能够增强第一密钥的随机性,从而可以使得加密内容更加难以被破解。
12.进一步地,所述生成第一密钥,包括:生成口令;对所述口令添加随机数,使用散列
函数获取添加了随机数的口令的散列值,得到所述第一密钥。
13.在上述实现过程中,通过对口令添加随机数,使用散列函数获取添加了随机数的口令的散列值,可以避免密钥被破解,更好的提升第一密钥对加密内容的安全性。
14.进一步地,所述预设放置规则,包括:从所述加密的源码文件尾部偏移第一预设字节长度,放置第一预设长度的密钥片段,从所述加密的源码文件尾部偏移第二预设字节长度,放置第二预设长度的密钥片段,从所述加密的源码文件头部偏移第三预设字节长度,放置第三预设长度的密钥片段。
15.在上述实现过程中,通过分散放置第一密钥的密钥片段,提高了第一密钥的获取难度,进而提高了加密私钥的安全性。
16.本技术实施例提供了一种程序运行方法,包括:接收程序运行指令;加载应用程序及其安装目录下的文件,所述文件包括加密的源码文件、按照预设放置规则分布到所述加密的源码文件中的第一密钥及加密私钥;所述加密私钥为所述第一秘钥对私钥加密得到的;根据所述预设放置规则从所述应用程序安装包中获取所述第一密钥及所述加密私钥;采用所述第一密钥对所述加密私钥进行解密,得到所述私钥;采用所述私钥对所述加密的源码文件解密,得到源码文件;运行所述源码文件。
17.在上述实现过程中,程序接收运行指令后,加载应用程序及其安装目录下的文件,可以保证程序源码解密过程在内存中完成,有效防止程序源码泄漏。通过采用第一密钥对私钥解密,并用私钥对加密源码文件进行解密,可以快速得到程序源码,与现有技术相比,可以在保证程序源码安全性的前提下,尽可能的不降低程序运行效率。
18.进一步地,所述根据所述预设放置规则从所述应用程序安装包中获取所述第一密钥及所述加密私钥,包括:从源码文件尾部偏移第一预设字节长度,读取第一预设长度的密钥片段;从所述加密的源码文件尾部偏移第二预设字节长度,读取第二预设长度的密钥片段;从所述加密的源码文件头部偏移第三预设字节长度,读取第三预设长度的密钥片段;将各密钥片段按照顺序进行拼接,得到所述第一密钥,从预设文件地址获取加密私钥。
19.在上述实现过程中,通过分散放置第一密钥的密钥片段,提高了第一密钥的获取难度,进而提高了加密私钥的安全性。通过读取私钥的预设文件地址,能够快速获取到加密私钥。
20.本技术实施例还提供了一种程序源码加密装置,包括:第一生成模块,用于生成第一密钥;第二生成模块,用于生成密钥对,所述密钥对包括公钥和私钥;源码加密模块,用于采用所述密钥对中的公钥对源码文件进行加密;私钥加密模块,用于采用所述第一密钥对所述密钥对中的私钥进行加密,生成加密私钥;第三生成模块,用于生成应用程序安装包,所述应用程序安装包包括加密的源码文件、所述加密私钥及按照预设放置规则分布到所述加密的源码文件中的第一密钥。
21.本技术实施例还提供了一种程序运行装置,包括:接收模块,用于接收程序运行指令;加载模块,用于加载应用程序及其安装目录下的文件;获取模块,用于根据所述预设放置规则从所述应用程序安装包中获取所述第一密钥及所述加密私钥;私钥解密模块,用于采用所述第一密钥对所述加密私钥进行解密,得到所述私钥;源码解密模块,用于采用所述私钥对所述加密的源码文件解密,得到源码文件;运行模块,用于运行所述源码文件。
22.本技术实施例还提供了一种电子设备,包括处理器和存储器;所述处理器用于执
行存储器中存储的一个或者多个程序,以实现上述任一种程序源码的加密方法及程序运行方法。
23.本技术实施例中还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述任一种程序源码加密方法或程序运行方法。
附图说明
24.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
25.图1为本技术实施例提供的一种程序源码加密方法的流程示意图;
26.图2为本技术实施例提供的一种程序运行方法的流程示意图;
27.图3为本技术实施例提供的一种程序源码加密装置的结构示意图;
28.图4为本技术实施例提供的一种程序运行装置的结构示意图;
29.图5为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
30.为了更好的理解本技术技术方案,下面对本技术应用场景做一详细描述。有些应用程序在客户端安装后,会附带生成一个依赖包,此依赖包支持应用程序运行。但当用户输入特定指令时,可以获取依赖包中的程序源码文件。为了防止程序源码文件泄漏,同时不影响应用程序运行效率,本技术提出一种程序源码加密方法。通过对程序源码和私钥加密的方式,降低程序泄密和私钥传输风险,并通过分散放置第一密钥,提升获取第一密钥的难度,在不增加程序复杂性的基础上保证程序安全性。在程序运行阶段,通过将加密源码读入内存,在内存中对程序源码解密的方法,支持程序运行,同时不降低程序运行效率。
31.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
32.实施例一
33.为了保证程序源码的安全性,同时提升程序运行效率,本技术实施例中提供了一种程序源码的加密方法。可以参见图1所示,图1为本技术实施例中提供的一种程序源码的加密方法的流程示意图,该方法包括:
34.s101:生成第一密钥。
35.在本技术实施例中,第一密钥用于给私钥进行加密。其中,私钥用于对程序源码文件解密。为了保证私钥传输的安全性,采用第一密钥对私钥进行加密。
36.在本技术实施例中,生成第一密钥的方式不做限定,可以通过随机字符串生成第一密钥,也可以通过口令生成第一密钥。
37.在一种可选实施方式中,可以通过随机字符串生成第一密钥。具体地,步骤s101包括:生成随机字符串;使用加密算法对所述随机字符串循环加密预设次数,得到第一密钥。其中,生成随机字符串的方式不做具体限定。示例性地,可以采用随机数生成器或算法生成随机字符串。其中,预设次数范围不做具体限定,通常次数越大,加密的第一秘钥越不容易
被破解。在一些可选的实施方式中,预设次数可以为1、2、3、4、5
……
n,n为正整数。
38.在一种可选实施方式中,预设次数可以为当前时间戳后两位数字。即采用当前时间戳后两位数字作为循环加密次数。其中,当前时间是指对随机字符串进行加密的时间。示例性地,对随机字符串加密时的时间为10:23:56,取最后两位数即56作为循环加密次数。
39.举例来说,可以先通过随机数生成器生成随机字符串,然后使用md5加密算法,对随机字符串加密当前时间后两位数字所对应的次数,得到第一密钥。
40.在另一种可选实施方式中,可以通过口令生成第一密钥。具体地,步骤s101包括:生成口令;对所述口令添加随机数;使用散列函数获取添加了随机数的口令的散列值,得到所述第一密钥。
41.其中,生成口令的方式不做限定。可以通过口令生成工具生成口令,也可以通过其他方式生成口令。为了防止口令被破解,向口令添加一个随机数。生成随机数的方式不做限定。将添加了随机数的口令输入散列函数进行哈希运算,得到一个散列值,即为第一密钥。
42.示例性地,通过口令生成工具生成口令,通过随机数生成器生成随机数,将其添加到口令中,对添加了随机数的口令输入散列函数进行运算,得到散列值,即为第一密钥。
43.s102:生成密钥对,密钥对包括公钥和私钥。
44.在本技术实施例中,生成密钥对的方法不做限定。可以使用密钥生成工具生成密钥对。示例性地,可以通过openssl密钥生成工具生成密钥对。
45.s103:采用密钥对中的公钥对源码文件进行加密。
46.在本技术实施例中,采用公钥对源码文件进行加密的方式不做限定,可以是各种非对称加密算法。示例性地,可以采用公钥加密算法rsa、数字签名算法(digital signature algorithm简称:dsa)、椭圆曲线密码算法(elliptic curve cryptography,简称:ecc)或密钥交换算法(diffie-hellman简称:dh)对源码文件加密。
47.s104:采用第一密钥对密钥对中的私钥进行加密,生成加密私钥。
48.在本技术实施例中,采用第一密钥对私钥进行加密的方式为对称加密方式。具体对称加密算法不做限定。示例性地,可以是高级加密标准算法aes或数据加密算法des。
49.s105:生成应用程序安装包,应用程序安装包包括加密的源码文件、加密私钥及按照预设放置规则分布到加密的源码文件中的第一密钥。
50.在本技术实施例中,预设放置规则为第一密钥分布到源码文件中的存储规则。
51.具体地,采用应用程序打包工具生成应用程序安装包,打包时,将加密私钥作为文件形式存放入安装包,同时将第一密钥根据预设放置规则分布到加密的源码文件中。预设放置规则不做具体限定,可以根据实际情况来设定。
52.在一种可选实施方式中,预设放置规则包括从加密的源码文件尾部偏移第一预设字节长度,放置第一预设长度的密钥片段,从加密的源码文件尾部偏移第二预设字节长度,放置第二预设长度的密钥片段,从加密的源码文件头部偏移第三预设字节长度,放置第三预设长度的密钥片段。
53.其中,第一预设字节长度不做具体限定,取值范围不超过源码文件字节长度。第二预设字节长度和第三预设字节长度不做具体限定,取值范围均不超过加密的源码文件字节长度。第一预设长度、第二预设长度、第三预设长度不做具体限定,取值范围不超过第一密钥长度,且三者长度加和等于第一密钥长度。
54.示例性地,从加密源码文件尾部偏移10个字节,向其中插入20个字符的第一密钥片段。从加密的源码文件尾部偏移20个字节,向其中插入30个字符的第一密钥片段。从加密的源码文件头部偏移15个字节,向其中插入剩余的第一密钥片段。
55.第一密钥的分布方式不只限于上述分成三段的方式,可以依照具体情况,在源码文件或其他配置文件中分成多段存放。其中,多段的取值范围不做限定,可以为大于三段。加密私钥作为文件形式存储在安装包中。
56.本技术实施例所提供的程序源码加密方法,通过公钥对程序源码加密,保证程序源码的安全性,通过第一密钥对私钥进行加密,保证了私钥传输过程的安全性。通过按照预设放置规则将第一密钥分布到加密的源码中,能够提高获取第一密钥的难度,从而保证加密私钥不被轻易破解,进而保证源码的安全性。由于使用加密方法对源码进行处理,没有增加源码的复杂度,从而在程序运行需要解析源码时,解析速度较快,能够保证程序运行效率。
57.此外,本技术实施例可以通过加密算法对随机字符串进行预设次数的循环加密,可以更加有效地增强随机字符串的随机性,使得采用第一密钥进行加密的内容更加难以被破解。
58.此外,本技术实施例可以采用时间戳的后两位数字作为循环加密次数,能够增强第一密钥的随机性,从而可以使得加密内容更加难以被破解。
59.此外,本技术实施例可以通过对口令添加随机数,使用散列函数获取口令的散列值,可以避免第一密钥被破解,更好的提升第一密钥对加密内容的安全性。
60.此外,本技术实施例可以通过分散放置第一密钥的密钥片段,提高了第一密钥的获取难度,进而提高了加密私钥的安全性。
61.实施例二
62.基于同一发明构思,本技术实施例中还提供了一种程序运行方法。可以参见图2所示,图2为本技术实施例中提供的一种程序运行方法的流程示意图,包括:
63.s201:接收程序运行指令。
64.本技术实施例中,应用程序安装完成后,当用户双击应用程序时,处理器接收到程序运行指令。
65.s202:加载应用程序及其安装目录下的文件,安装目录下的文件包括加密的源码文件、加密私钥及按照预设放置规则分布到加密的源码文件中的第一密钥,加密私钥为第一秘钥对私钥加密得到的。
66.在本技术实施例中,应用程序已经在客户端被安装,在安装应用程序时应用程序安装包中的文件被释放到安装目录下。安装目录下的文件包括加密的源码文件、加密私钥及按照预设放置规则分布到加密的源码文件中的第一密钥即可。
67.电子设备将程序安装包中的加密源码文件、加密私钥加载到内存中。
68.s203:根据预设放置规则从应用程序安装包中获取第一密钥及加密私钥。
69.在一种可选实施方式中,电子设备从加密的源码尾部偏移第一预设字节长度,读取第一预设长度的密钥片段。从加密的源码尾部偏移第二预设字节长度,读取第二预设长度的密钥片段。从加密的源码文件头部偏移第三预设字节长度,读取第三预设长度的密钥片段。将各密钥片段按照顺序进行拼接,得到第一密钥。获取到第一密钥后,从预先设定的
文件地址读取加密私钥。所述预先设定的文件地址,具体设定方法不做限定。可以是预先写入程序中的加密私钥地址,也可以是从配置文件中读取的加密私钥地址。
70.示例性地,从加密源码尾部偏移10个字节,读取20个字符的第一密钥片段。从加密的源码尾部偏移20个字节,读取30个字符的第一密钥片段。从加密的源码头部偏移15个字节,读取剩余字符长度的第一密钥片段。其中剩余字符长度为第一密钥长度-20-30。同时,根据设定的文件地址,如从/app/data/secret.ini文件地址中读取加密私钥。
71.s204:采用第一密钥对加密私钥进行解密,得到私钥。
72.在本技术实施例中,采用第一密钥对加密私钥解密,解密算法与加密算法对应。示例性地,如果采用aes对私钥加密,则采用aes对加密私钥解密。如果采用des对私钥加密,则采用des对加密私钥解密。
73.s205:采用私钥对加密的源码文件解密,得到源码文件。
74.在本技术实施例中,采用私钥对加密的源码文件解密,解密算法与加密算法对应。示例性地,如果采用rsa算法和公钥对源码文件加密,则使用rsa算法和私钥对源码文件解密。
75.s206:运行源码文件。
76.在本技术实施例中,当在内存中对加密的源码解密后,则运行程序源码,渲染应用程序界面,启动应用程序。
77.本技术实施例提供的程序运行方法,在程序接收运行指令后,加载应用程序及其安装目录下的文件,可以保证程序源码解密过程在内存中完成,有效防止程序源码泄漏。通过采用第一密钥对私钥解密,并用私钥对加密源码文件进行解密,可以快速得到程序源码,与现有技术相比,可以在保证程序源码安全性的前提下,有效保证程序运行效率。
78.此外,本技术实施例可以通过从加密的源码文件中读取第一密钥片段,并按顺序进行拼接,可以准确得到第一密钥。通过预设文件地址能够快速获取加密私钥。
79.实施例三
80.本技术实施例以跨平台桌面级应用开发框架electron平台为例,说明对应用程序源码加密解密的全过程。
81.electron平台构建的应用程序,由于javascript代码不参与编译,因此,需要对javascript源码加密。首先采用随机字符串的方式生成第一密钥,采用密钥生成工具openssl生成密钥对。用密钥对中的公钥对应用程序javascript源码文件加密,加密算法采用rsa非对称加密算法,得到加密的javascript源码文件。用第一密钥对密钥对中的私钥进行加密,加密算法采用aes对称加密算法。加密私钥以文件形式存放。将第一密钥按照预设放置规则存储到加密源码文件中。预设放置规则可以为从加密源码文件头部偏移10个字节,放入30个字符长度的第一密钥片段,从加密源码文件尾部偏移34个字节,放入20个字符长度的第一密钥片段,从加密源码文件尾部偏移100个字节,放入剩余字符长度的第一密钥片段。采用打包工具对应用程序打包,生成应用程序安装包,应用程序安装包至少包括包含了第一密钥的加密的源码文件和加密密钥文件。
82.当客户端安装该应用程序时,会将应用程序安装包中的文件释放到安装目录下。用户双击该应用程序,电子设备将安装目录下的加密源码文件加载到内存中,根据预设放置规则获取到第一密钥的各片段,按照顺序进行拼装,得到第一密钥。同时,根据预设文件
地址获取到加密私钥,采用第一密钥和aes算法对加密私钥解密。然后用解密的私钥和rsa算法对内存中的加密源码进行解密,得到解密的源码。电子设备运行解密的源码,渲染应用程序。
83.实施例四
84.基于同一发明构思,本技术实施例中还提供了一种程序源码加密装置300。请参阅图3所示,图3示出了采用图1所示的方法的程序源码加密装置。应理解,程序源码加密装置300具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。程序源码加密装置300包括至少一个能以软件或固件的形式存储于存储器中或固化在程序源码加密装置300的操作系统中的软件功能模块。具体地:
85.参见图3所示,程序源码加密装置300可以包括:
86.第一生成模块301,用于生成第一密钥。
87.第二生成模块302,用于生成密钥对,密钥对包括公钥和私钥。
88.源码加密模块303,用于采用密钥对中的公钥对源码文件进行加密。
89.私钥加密模块304,用于采用第一密钥对密钥对中的私钥进行加密,生成加密私钥。
90.第三生成模块305,用于生成应用程序安装包。其中,应用程序安装包包括加密的源码文件、配置文件、加密私钥及按照预设放置规则分布到加密的源码文件中的第一密钥。
91.在本技术实施例中,第一生成模块301具体用于生成随机字符串,使用加密算法对随机字符串循环加密预设次数,得到第一密钥。可选地,预设次数为当前时间戳后两位数字。
92.在本技术实施例中,第一生成模块301具体用于生成口令,对口令添加随机数,使用散列函数获取添加了随机数的口令的散列值,得到所述第一密钥。
93.在本技术实施例中,预设放置规则用于从加密的源码文件尾部偏移第一预设字节长度,放置第一预设长度的密钥片段,从配置文件尾部偏移第二预设字节长度,放置第二预设长度的密钥片段,从配置文件头部偏移第三预设字节长度,放置第三预设长度的密钥片段。
94.实施例五
95.基于同一发明构思,本技术实施例中还提供了一种程序运行装置。具体地,参见图4所示,装置400可以包括:
96.接收模块401,用于接收程序运行指令。
97.加载模块402,用于加载应用程序及其安装目录下的文件。
98.获取模块403,用于根据预设放置规则从应用程序安装包中获取第一密钥及加密私钥。
99.私钥解密模块404,用于采用第一密钥对加密私钥进行解密,得到私钥。
100.源码解密模块405,用于采用私钥对加密的源码文件解密,得到源码文件。
101.运行模块406,用于运行源码文件。
102.获取模块403,在根据预设放置规则从应用程序安装包中获取第一密钥及加密私钥时,具体用于从源码文件尾部偏移第一预设字节长度,读取第一预设长度的密钥片段。从配置文件尾部偏移第二预设字节长度,读取第二预设长度的密钥片段。从配置文件头部偏
移第三预设字节长度,读取第三预设长度的密钥片段。将各密钥片段按照顺序进行拼接,得到第一密钥。从预设文件地址获取加密私钥。
103.需要理解的是,出于描述简洁的考量,部分实施例一和二中描述过的内容在本实施例中不再赘述。
104.实施例六
105.本实施例提供了一种电子设备500,参见图5所示,其包括处理器501和存储器502。其中:
106.处理器501用于执行存储器502中存储的一个或多个程序,以实现上述实施例一所描述的程序源码的加密方法和实施例二所描述的程序运行方法。
107.可以理解,图5所示的结构仅为示意,电子设备还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。
108.例如,处理器501和存储器502之间可以是通过通信总线的方式进行的连接。又例如,电子设备还可包括诸如显示器、鼠标、键盘等部件。
109.在本技术实施例中,处理器501可以为中央处理器、微处理器、单片机等,但不作为限制。存储器502可以为随机存取存储器,只读存储器,可编程只读存储器,可擦除只读存储器,电可擦除只读存储器等,但不作为限制。
110.在本技术实施例中,电子设备可以是,但不限于台式机、笔记本电脑、智能手机、智能穿戴设备、车载设备等实体设备,还可以是虚拟机等虚拟设备。另外,电子设备也不一定是单台设备,还可以是多台设备的组合,例如服务器集群,等等。
111.本实施例还提供了一种计算机可读存储介质,如软盘、光盘、硬盘、闪存、u盘、sd(secure digital memory card,安全数码卡)卡、mmc(multimedia card,多媒体卡)卡等,在该计算机可读存储介质中存储有实现上述各个步骤的一个或者多个程序,这一个或者多个程序可被一个或者多个处理器执行,以实现上述实施例一所述的程序源码加密方法和实施例二所述的程序运行方法。在此不再赘述。
112.在本技术所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
113.在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
114.在本文中,多个是指两个或两个以上。
115.以上仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1