本发明涉及软件保护技术领域,具体为一种通过加密python明文源码token的知识产权保护系统。
背景技术:
python,是一种面向对象的解释型,面向对象、动态数据类型的高级程序设计语言,由荷兰人guidovanrossum于1989年发明,第一个公开发行版发行于1991年。它的领域非常的广泛,包括游戏、图像、云计算、大数据、机器学习、人工智能、xml以及机器人等等。python可以完成现实中的各种任务,减少开发者们日复一日所做的重复事情,python是一种通用语言,python在各领域的应用角色几乎是没有限制,无论是从网站、游戏开发、机器人或是一些高科技的航天飞机控制都可以看到python代码的出现。
但是作为一种解释型脚本语言,可执行的代码一般以明文源码文件格式(.py后缀)、或者编译字节码文件格式(.pyc后缀)存在。明文源码文件格式(py文件)里面的文件内容,可以很容易被阅读、分析,即使使用编译工具进行一次编译后生成字节码格式文件(pyc文件),仍然可以被很轻易的反编译出来一个明文源码文件。
因此现有的代码保护具有如下的缺陷:1、明文形式的代码,易被阅读、分析,无法提供有力的知识产权保护机制。
技术实现要素:
本发明的目的在于提供一种通过加密python明文源码token的知识产权保护系统,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种通过加密python明文源码token的知识产权保护系统,保护系统包括加密系统和运行系统;
所述加密系统包括python明文源码token加密模块,所述python明文源码token加密模块通过自定义的对称密钥加密算法对python明文源码文件进行加密;
所述运行系统包括新python解释器,所述新python解释器用来对python密文代码文件进行解密;
所述新python解释器内添加有python密文代码token解密运行模块。
优选的,所述新python解释器为python原生解释器通过python密文代码token解密运行模块修改得到。
优选的,对python原生解释器的修改内容包括:
(1)、修改原生python解释器中tokenizer机制,具体为修改tokenizer.c源码中的decoding_fgets函数,增加识别加密标签功能;
(2)、禁用自动生成pyc文件功能。
优选的,保护系统的工作流程包括以下步骤:
步骤一、将python明文源码文件通过python明文源码token加密模块进行加密:
1.1、python明文源码token加密模块根据行号生成一个对称密钥,并用这个对称密钥加密替换python明文源码文件中的可见字符,形成密文;
1.2、python明文源码token加密模块生成一个加密标签添加到密文中,从而生成一个python密文代码文件;
步骤二、将python密文代码文件通过新python解释器进行解密:
2.1、将python密文代码token解密运行模块添加入python原生解释器中,从而修改python原生解释器,生成一个新python解释器;
2.2、通过新python解释器对python密文代码文件进行解密。
优选的,步骤一中,可见字符包括英文字母字符、标点符号字符以及阿拉伯数字字符。
与现有技术相比,本发明的有益效果是:
本发明可以有效的保护python文件,无法被更改、阅读、分析,从而达到保护知识产权目的。
附图说明
图1为本发明系统的结构示意图;
图2为本发明系统中加密系统的工作流程示意图;
图3为本发明系统中运行系统的工作流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-3,本发明提供一种技术方案:
一种通过加密python明文源码token的知识产权保护系统,保护系统包括加密系统和运行系统,加密系统用来对python明文源码文件进行加密,运行系统用来对python密文代码文件进行解密。
加密系统包括python明文源码token加密模块,python明文源码token加密模块通过自定义的对称密钥加密算法对python明文源码文件进行加密。
将python明文源码文件通过python明文源码token加密模块进行加密:
1.1、python明文源码token加密模块根据行号生成一个对称密钥,并用这个对称密钥加密替换python明文源码文件中的可见字符,可见字符包括英文字母字符、标点符号字符以及阿拉伯数字字符,替换后形成密文,达到加密python代码中token的效果;
1.2、同时,python明文源码token加密模块生成一个加密标签添加到密文中,从而生成一个python密文代码文件,实现加密效果。
运行系统包括新python解释器,新python解释器用来对python密文代码文件进行解密。
新python解释器内添加有python密文代码token解密运行模块,新python解释器为python原生解释器通过python密文代码token解密运行模块修改得到。
python原生解释器为python计算机程序设计语言的无需加密解密的一个最原始的解释器,很显然无法对加密后的python密文代码文件进行解密,所以通过添加该python密文代码token解密运行模块,修改python原生解释器,生成一个新python解释器。
对python原生解释器的修改内容主要为两点:
(1)、修改原生python解释器中tokenizer机制,具体为修改tokenizer.c源码中的decoding_fgets函数,增加识别加密标签功能,如果发现有加密标签,会根据当前行号生成对称密钥,解密当前行内token数据,如果没有加密标签就按照以前逻辑处理;
(2)、禁用自动生成pyc文件功能。
实施例:
本发明具体实施案例如下:
pyenrypt是python代码加密模块,python是添加了python加密运行模块的的新python解释器。
1.python明文源码内容如下:
#!/usr/bin/python
print'helloworld';
2.使用pyenrypt进行加密:
./pyencrypthelloworld.pyhelloworld.py.encry;
3.python密文源码内容如下:
#!/usr/bin/python
#encrypted
13j1vb()&m/q:p3-ei;
4.使用具有解密功能python解释器运行密文源码:
pythonhelloworld.py.encry;
5.运行结果如下,与明文源码一致:
helloworld。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。