5种方法,加密你的Python代码 !
Python越来越热门了,2019年3月TIOBE编程语言排行榜上,Python更是罕见的击败了“霸榜三巨头”之一的C++,挤进前三。
Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Pyhton也有一些不可掩盖的缺点,版本不兼容,运行效率不高等等。
其中一个缺点,让不少开发者头疼不已,由于Python解释器开源的关系,导致Python代码无法加密,代码的安全性得不到保障。
当然,想要加密Python代码,也并非无解。最常见的加密方式有4种,还有1种独特的加密方式。
1
Python解释器在执行代码的过程中,会首先生成.pyc文件,然后再解释执行.pyc中的内容,当然,解释器也能直接执行.pyc文件。
.pyc文件是一个二进制的文件,是不具备可读性的。
假如我们发到客户环境时,是.pyc文件,而不是.py,那么是不是就可以保护我们的Python代码?
想要做到这一点,并不难。Python标准库就提供了一个名叫compileall的库,使用它就可以做到。
执行如下命令,即可将目录下的所有.py文件编译成.pyc文件:
python -m compileall 然后删除 目录下所有 .py 文件就可以了。
$ find -name '*.py' -type f -print -exec rm {} ;
这一方法,可以加密我们的Python代码,胜过代码裸在外面。尴尬的是,因为Python解释器的兼容较差,有些版本并不能运行.pyc文件。而且已经有现成的反编译工具,可以直接破解。
比如python-uncompyle6(「链接」),只要执行以下命令,就可以搞定。
$ uncompyle6 *compiled-python-file-pyc-or-pyo*
关于怎么快速学python,可以加下小编的python学习群:611+530+101,不管你是小白还是大牛,小编我都欢迎,不定期分享干货
每天晚上20:00都会开直播给大家分享python学习知识和路线方法,群里会不定期更新最新的教程和学习方法,大家都是学习python的,或是转行,或是大学生,还有工作中想提升自己能力的,如果你是正在学习python的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实
2
代码混淆,也是一种常见的“加密”方式,严格意义上说,这一方法并不是加密,而是上代码的可读性变差。比如删除注释,添加毫无意义的注释,添加无效代码,对变量、函数、类进行重命名等。
内容不可读,代码就受到了保护。
代码混淆的工具很多,一个比较好用的混淆库是pyobfuscate(GitHub - astrand/pyobfuscate: pyobfuscate)。这个库可以对类、函数进行重命名,并且插入无关的代码,甚至自动加空格等等。
这一方法很简单,也提高了破解的门槛。但由于代码结构未发生变化,字节码也能获取,破解难度也不高。
一般而言,使用这一方式较为简单,实用。
3
如果有一款工具,可以将Python脚本打包成在某一平台的可执行文件,最终我们发行的,是一份打包完成的二进制文件,那么程序就更难被破解了?
py2exe(FrontPage - py2exe.orgFrontPage - py2exe.org)就是一款很好的打包工具,可以将Python脚本打包成可在Windows上运行的文件。
这一方式的优点是进一步提高了破解门槛。遗憾的是,你只能在windows上运行它。
4
Python运行速度慢何解?用Cython就可以带来性能的提升。实际上,Cython也可以用来加密Python代码。
Cython的原理是,将.py编译为.c文件,再将.c文件编译为.so或者.pyd,这样一来,文件就变得难以破解了。
这样做的好处是,Python代码很难被破解,缺点是有时候,Cython可能不支持一小部分代码,完善起来就比较麻烦了。
5
最后一种方法,做得比较绝。
由于Python是解释型语言,因此在发行Python程序的时候,就必须包含一个Python解释器,如果我们修改这个解释器,代码不就被保护起来了吗?
如果我们能对最原始的Python代码进行加密,加密后的代码被发行后。哪怕被别人看到了,但因为不晓得算法是怎样的,就破解不了了。
这是因为Python解释器本身是一个二进制文件,自然也就无法获得关键性的数据,进而保护了源码。
虽然这一方法最为安全,可操作难度较高。你必须掌握基本的加解密算法,还要探究Python执行代码的方式,从而了解到从什么地方进行加解密。最后禁用字节码,以防通过.pyc反编译即可。
以上五种加密方式,有利有弊,有难有易,根据需求选择就可以了。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
二十个一乘以二十个二等于多少?C语言经典算法设计之大数乘法
前言 新手上路,多多关注,这真的对我很重要 本文介绍一种大数的乘法,也就是说,无论得到或者传入的数有多大,它总能计算出正确的结果。 大数乘法 由于乘法可以互换所以对于输入的数字没有限制条件,计算方法还是模仿手工算法,由被乘数的低位开始和乘数的每一位相乘并且要将大于9的十位数向前进一位,存在3个问题需要我们解决。 主要问题 我们要用多大的数组存储结果? 要使用嵌套循环吗? 如何在计算的过程中保证进位? 小编给大家推荐一个学习氛围超好的地方,C/C++交流企鹅裙:【8.7.0+九.六.三+2.5.1】适合在校大学生,小白,想转行,想通过这个找工作的加入。裙里有大量学习资料,有大神解答交流问题,每晚都有免费的直播课程 解决方案 二个数相乘最大的位数是两个乘数的位数之和。 很明显由于乘法的特性使用嵌套循环很合适。 在大数加减中执行完毕后再对存储结果的数组进行一次进位,但在乘法中我们需要每执行一趟就要对数组进行进位的处理 实现源码
- 下一篇
Python骚操作,提取pdf文件中的表格数据!
在实际研究中,我们经常需要获取大量数据,而这些数据很大一部分以pdf表格的形式呈现,如公司年报、发行上市公告等。面对如此多的数据表格,采用手工复制黏贴的方式显然并不可取。那么如何才能高效提取出pdf文件中的表格数据呢? Python提供了许多可用于pdf表格识别的库,如camelot、tabula、pdfplumber等。综合来看,pdfplumber库的性能较佳,能提取出完整、且相对规范的表格。因此,本推文也主要介绍pdfplumber库在pdf表格提取中的作用。 作为一个强大的pdf文件解析工具,pdfplumber库可迅速将pdf文档转换为易于处理的txt文档,并输出pdf文档的字符、页面、页码等信息,还可进行页面可视化操作。使用pdfplumber库前需先安装,即在cmd命令行中输入: pip install pdfplumber pdfplumber库提供了两种pdf表格提取函数,分别为.extract_tables( )及.extract_table( ),两种函数提取结果存在差异。为进行演示,我们网站上下载了一份短期融资券主体信用评级报告,为pdf格式。任意选取某一表格,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装Nodejs环境