一种基于对称算法和专用加载模块的Python程序模块加密方法

【专利说明】一种基于对称算法和专用加载模块的Python程序模块加密方法

技术领域

[0001]本发明涉及一种网络安全技术,具体涉及一种Python程序模块的安全技术。

【背景技术】

[0002]随着Python语言的流行,不少应用开始采用Python来实现。但Python语言开发的程序模块(pyc、pyo),很容易被反编译出源代码。而且由于Python语言自身的特性,无法用类似Java、C#的混淆器对程序模块进行混淆,所以用Python开发的应用很难保护其源代码的知识产权。

[0003]现有的一些保护方法,要么影响开发(比如定制一个专用的Python解释器,开发和发布用不同),要么仅仅是将其打包成一个exe文件(如py2exe工具,但Python程序模块仍可以很容易地拿出并反编译),缺少一个方便易用的、防护性较强的代码保护方法。

【发明内容】

[0004]针对现有Python语言开发的程序模块在安全防护方面所存在的问题,本发明提供一种Python程序模块加密方法,可以在不影响开发的前提下,保护Python程序模块不被反编译。

[0005]为了达到上述目的,本发明采用如下的技术方案:

[0006]一种基于对称算法和专用加载模块的Python程序模块加密方法,所述加密方法使用固定对称密钥加密Python程序模块,并在应用的主程序中,通过包含固定对称密钥的专用加载模块,在运行时加载、解密并运行所加密的模块,其中加密时使用的密钥要和专用加载模块中的密钥保持一致。

[0007]优选的,所述加密方法具体包括如下步骤:

[0008]I)采用固定密钥和对称算法加密需要保护的Python程序模块;

[0009]2)基于步骤I)中的固定密钥和对称算法,形成一Python程序专用加载模块,来加载、解密所加密的Python程序模块;

[0010]3)应用启动时先加载专用加载模块;

[0011]4)应用发布时,只发布加密后的Python程序模块和应用的启动部分。

[0012]进一步的,所述步骤2)中形成的专用加载模块编译为Python扩展模块,并通过固定密钥和对称算法加密Python程序模块。

[0013]基于本发明提供的加密方法,除了应用的启动部分外,所有用Python写的业务逻辑程序模块,都可以用对称算法的加密得到保护,而且专用的加载模块也是C语言编译的Python扩展模块,从而保护这些程序模块不会轻易被反编译,从而保护应用的知识产权。

【具体实施方式】

[0014]为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合实例,进一步阐述本发明。

[0015]本发明提供的Python程序模块加密方法,其基于对称算法和专用加载模块,使用固定对称密钥加密Python程序模块,并在应用的主程序中,通过包含固定对称密钥的专用加载模块,在运行时加载、解密并运行所加密的模块,其中加密时使用的密钥要和专用加载模块中的密钥保持一致。

[0016]基于上述原理,该Python程序模块加密方法具体通过如下步骤实现:

[0017]I)采用固定密钥和对称算法加密需要保护的Python程序模块。

[0018]2)基于步骤I)中的固定密钥和对称算法,形成一Python程序专用加载模块,来加载、解密所加密的Python程序模块。该专用加载模块具体编译为Python扩展模块,以此来保护密钥以及加密算法不被轻易反编译。

[0019]3)应用启动时先加载专用加载模块;

[0020]4)应用发布时,只发布加密后的Python程序模块和应用的启动部分。

[0021]以下通过一具体实例来进一步说明本发明的方案:

[0022]I)选择一种对称加密算法(如果RC4算法),并生成一个随机的对称密钥。

[0023]2)用步骤I)中生成的对称密钥和对称算法,对需要保护的Python的编译文件(pyc、pyo)加密,加密后的文件以.pye结尾。

[0024]3)用Python实现一个专用加载模块。具体为,实现Python中的一个finder (负责搜索并加载Python程序模块)对象,此对象可以在指定搜索路径中搜索以.pye结尾的加密Python程序模块,并可根据步骤I)中的对称密钥和对称算法对加密的Python程序模块解密。

[0025]4)将步骤3)中用Python实现的专用加载模块,用Cython工具转换生成C语言,并进一步编译生成为Python扩展模块,以保护其中定义的对称密钥和对称算法实现不被轻易地反编译。

[0026]5)在应用的启动部分,首先加载步骤4)中生成的专用加载模块,并指定待搜索的加密Python程序模块的路径。

[0027]6)在应用发布时,只发布加密后的Python程序模块和应用的启动部分。

[0028]以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

【主权项】

1.一种基于对称算法和专用加载模块的Python程序模块加密方法,其特征在于,所述加密方法使用固定对称密钥加密Python程序模块,并在应用的主程序中,通过包含固定对称密钥的专用加载模块,在运行时加载、解密并运行所加密的模块,其中加密时使用的密钥要和专用加载模块中的密钥保持一致。

2.根据权利要求1所述的一种基于对称算法和专用加载模块的Python程序模块加密方法,其特征在于,所述加密方法具体包括如下步骤: 1)采用固定密钥和对称算法加密需要保护的Python程序模块; 2)基于步骤I)中的固定密钥和对称算法,形成一Python程序专用加载模块,来加载、解密所加密的Python程序模块; 3)应用启动时先加载专用加载模块; 4)应用发布时,只发布加密后的Python程序模块和应用的启动部分。

3.根据权利要求2所述的一种基于对称算法和专用加载模块的Python程序模块加密方法,其特征在于,所述步骤2)中形成的专用加载模块编译为Python扩展模块,并通过固定密钥和对称算法加密Python程序模块。

【专利摘要】本发明公开了一种基于对称算法和专用加载模块的Python程序模块加密方法,其使用固定对称密钥加密Python程序模块,并在应用的主程序中,通过包含固定对称密钥的专用加载模块,在运行时加载、解密并运行所加密的模块,其中加密时使用的密钥要和专用加载模块中的密钥保持一致。本发明可以保护Python程序模块不被轻易反编译分析,从而保护Python所开发程序的知识产权。

【IPC分类】G06F21-14

【公开号】CN104573425

【申请号】CN201410850871

【发明人】任伟

【申请人】上海格尔软件股份有限公司

【公开日】2015年4月29日

【申请日】2014年12月31日

python自带的对称算法_一种基于对称算法和专用加载模块的Python程序模块加密方法...相关推荐

  1. aes子密钥生成c语言_一种基于流密码算法的子密钥生成方法与流程

    本发明涉及一种用于分组加解密算法的子密钥的生成方法. 背景技术: 随着信息技术的发展,信息安全性的问题却愈来愈显得突出,保证信息安全的一个重要技术就是密码学.密码学在信息安全技术中扮演着基础的角色,是 ...

  2. python数据批量写入iq数据库_通过Load table命令将数据文件加载到Sybase IQ数据库里面的Python脚本...

    CREATE TABLE poc_app.sys_ftp_cfg ( ftp_id              varchar(100) NOT NULL,          --话单文件名标记 ftp ...

  3. 什么是陀螺仪的dr算法_一种基于DR/GPS/MM的组合定位系统数据融合算法

    摘 要: 针对盲区中使用INS惯性导航系统进行定位存在误差积累的问题,提出一种基于DR航位推算.GPS全球定位系统和MM地图匹配的组合定位系统数据融合算法.该算法利用GPS和MM中得到的位置信息,一方 ...

  4. skew算法_一种基于FPGA的多通道高速输入信号自动de‑skew算法的制作方法

    本发明涉及高速数据采集技术,更具体的涉及一种基于FPGA的多通道高速输入信号自动de-skew算法. 背景技术: 随着对精度和速率要求越来越高,目前数据采集系统向着多通道和超高速两个方向发展.多通道高 ...

  5. 正确加载MySQL驱动的语句_使用数据库客户端工具Oracle SQL Developer加载第三方驱动连接mysql的方法...

    用Oracle SQL Developer时遇到no ocijdbc11 in java.library.path怎么办 不是配置环境变量,而是去选项里面,添加数据库的驱动 jdbc的驱动没有在cla ...

  6. java监听微信_一种基于java后台应用监控微信小程序的用户访问量的方法与流程...

    本发明涉及java应用与微信小程序应用开发技术领域,具体涉及一种基于java后台应用监控微信小程序的用户访问量的方法. 背景技术: 微信小程序,简称小程序,是一种不需要下载安装即可使用的应用,它实现了 ...

  7. xml建模包括以下_一种基于xml建模的印刷出版中多元组合符号自动生成方法

    一种基于xml建模的印刷出版中多元组合符号自动生成方法 [技术领域] [0001] 本发明属于印刷出版技术领域,具体涉及一种基于XML建模的印刷出版中多元组 合符号自动生成方法. [背景技术] [00 ...

  8. python动态加载模块有什么用_人生苦短我用python(02)动态加载模块

    继第一期[人生苦短我用Python系列专栏]发布后,深受广大睿普迷的一致好评,经常问小普第二期什么时候出呀?好期待~ 来来来小普这就呈上第二期[02动态加载模块] 错过了第一期的小伙伴们可以点此穿越哦 ...

  9. go加载python_人生苦短我用python(02)动态加载模块-Go语言中文社区

    文章内容为原创,欢迎转载请注明出处 作者: EflyPro->晦明禅师 文章来源:公众号"睿江云计算" 继第一期[人生苦短我用Python系列专栏]发布后,深受广大睿普迷的一 ...

最新文章

  1. Kaldi不支持Cuda10_1版本
  2. 用于HTTP加密浏览的TW2.0插件
  3. svn 服务器在生产环境中的搭建
  4. 时光煮雨 Unity3D实现2D人物移动-总结篇
  5. SolrException: Index locked 和 Error opening new searcher 最终解决方案(找了好久才解决)
  6. 如何更快的发现新APP,不会错过新的趋势
  7. 信息系统项目管理师-招投标法、政府采购法核心知识点思维脑图
  8. GDCM:目录条目的测试程序
  9. SwiftUI之深入解析高级动画的路径Paths
  10. 算法题目——第K大的数
  11. Java必考题目之JVM面试题目和答案
  12. Java 跌落神坛,Python 继续夺冠....凭啥?
  13. Python实现蒙特卡罗方法仿真模拟求解圆周率Pi值
  14. 怎样高效利用PPT模板网站找到适合自己的PPT模板
  15. [JZOJ1320] 【Usaco2009 gold 】拯救奶牛
  16. 去掉JW Player水印及右键官方菜单
  17. 蓝桥杯嵌入式设计与开发历届客观题答案
  18. 清风算法对seo不是打击而是好事
  19. mac 两种视频转音频方法
  20. 段永平回应一切:从未遥控OV,黄峥不是弟子,靠营销不能持久

热门文章

  1. 容器(container)技术之发展简史
  2. Linux 内核 hlist_head,hlist_node
  3. linux重定向:21
  4. xp计算机用户密码设置,XP怎么设置开机密码_XP系统设置开机密码教程-192路由网...
  5. python串口上位机画图_温度传感器+I2C+串口+PC上位机(pyserial)例子
  6. python抓取数据包_利用python-pypcap抓取带VLAN标签的数据包方法
  7. 微服务启动顺序_微服务框架Demo.MicroServer运行手册
  8. wpf label字体为斜体_快来收下这份字体设计必备知识点
  9. 服务器安装lnmp的时候出现client_loop: send disconnect: Connection reset by peer
  10. OpenShift 4 之获取版本升级路径图