Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Pyhton也有一些不可掩盖的缺点,版本不兼容,运行效率不高等等。

其中一个缺点,让不少开发者头疼不已,由于Python解释器开源的关系,导致Python代码无法加密,代码的安全性得不到保障。

当然,想要加密Python代码,也并非无解。最常见的加密方式有4种,还有1种独特的加密方式。

第一种

Python解释器在执行代码的过程中,会首先生成.pyc文件,然后再解释执行.pyc中的内容,当然,解释器也能直接执行.pyc文件。

.pyc文件是一个二进制的文件,是不具备可读性的。

假如我们发到客户环境时,是.pyc文件,而不是.py,那么是不是就可以保护我们的Python代码?

想要做到这一点,并不难。Python标准库就提供了一个名叫compileall的库,使用它就可以做到。

执行如下命令,即可将目录下的所有.py文件编译成.pyc文件:

python -m compileall 然后删除 目录下所有 .py 文件就可以了。

$ find <src> -name '*.py' -type f -print -exec rm {} \;

这一方法,可以加密我们的Python代码,胜过代码裸在外面。尴尬的是,因为Python解释器的兼容较差,有些版本并不能运行.pyc文件。而且已经有现成的反编译工具,可以直接破解。

比如python-uncompyle6(「链接」),只要执行以下命令,就可以搞定。

$ uncompyle6 *compiled-python-file-pyc-or-pyo*

第二种

代码混淆,也是一种常见的“加密”方式,严格意义上说,这一方法并不是加密,而是上代码的可读性变差。比如删除注释,添加毫无意义的注释,添加无效代码,对变量、函数、类进行重命名等。

内容不可读,代码就受到了保护。

代码混淆的工具很多,一个比较好用的混淆库是pyobfuscate(GitHub - astrand/pyobfuscate: pyobfuscate)。这个库可以对类、函数进行重命名,并且插入无关的代码,甚至自动加空格等等。

这一方法很简单,也提高了破解的门槛。但由于代码结构未发生变化,字节码也能获取,破解难度也不高。

一般而言,使用这一方式较为简单,实用。

第三种

如果有一款工具,可以将Python脚本打包成在某一平台的可执行文件,最终我们发行的,是一份打包完成的二进制文件,那么程序就更难被破解了?

py2exe(FrontPage - py2exe.orgFrontPage - py2exe.org)就是一款很好的打包工具,可以将Python脚本打包成可在Windows上运行的文件。

这一方式的优点是进一步提高了破解门槛。遗憾的是,你只能在windows上运行它。

第四种

Python运行速度慢何解?用Cython就可以带来性能的提升。实际上,Cython也可以用来加密Python代码。

Cython的原理是,将.py编译为.c文件,再将.c文件编译为.so或者.pyd,这样一来,文件就变得难以破解了。

这样做的好处是,Python代码很难被破解,缺点是有时候,Cython可能不支持一小部分代码,完善起来就比较麻烦了。

第五种

最后一种方法,做得比较绝。

由于Python是解释型语言,因此在发行Python程序的时候,就必须包含一个Python解释器,如果我们修改这个解释器,代码不就被保护起来了吗?

如果我们能对最原始的Python代码进行加密,加密后的代码被发行后。哪怕被别人看到了,但因为不晓得算法是怎样的,就破解不了了。

这是因为Python解释器本身是一个二进制文件,自然也就无法获得关键性的数据,进而保护了源码。

虽然这一方法最为安全,可操作难度较高。你必须掌握基本的加解密算法,还要探究Python执行代码的方式,从而了解到从什么地方进行加解密。最后禁用字节码,以防通过.pyc反编译即可。

以上五种加密方式,有利有弊,有难有易,根据需求选择就可以了。

python代码如何加密相关推荐

  1. python代码加密cython_利用Cython对python代码进行加密

    利用Cython对python代码进行加密 Cython是属于PYTHON的超集,他首先会将PYTHON代码转化成C语言代码,然后通过c编译器生成可执行文件.优势:资源丰富,适合快速开发.翻译成C后速 ...

  2. cython加密代码python_利用Cython对python代码进行加密

    利用Cython对python代码进行加密 Cython是属于PYTHON的超集,他首先会将PYTHON代码转化成C语言代码,然后通过c编译器生成可执行文件.优势:资源丰富,适合快速开发.翻译成C后速 ...

  3. python代码封装加密_对Python源码加密及反编译前后对比

    关于python的加密 目前软件开发商对 Python 加密时可能会有两种形式,一种是对python转成的exe进行 保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程. ...

  4. python代码封装加密_python对煎蛋网加密处理方式

    原标题:python对煎蛋网加密处理方式 最近一直有朋友问我改版的煎蛋网妹子图怎么爬,因为他们花费精力结果抓了一整个文件夹的防盗图.我之前在很久以前的一篇博客说过,对于这种js处理的网页,要想抓取到网 ...

  5. python代码封装加密_静态编译python源代码,使用Nuitka加密你的py源码

    Nuitka,100%兼容标准python2/python3,静态编译你的python程序 1. 概述 Nuitka(nuitka.net)可以将python代码转换为C++,然后编译为可执行文件,其 ...

  6. 【python】python代码加密与License控制

    背景 在一些使用python的商业项目上,开发人员不想被用户看到源代码时,就需要对python代码进行加密:进一步地,如果想限制用户只能在获得授权的机器上运行你写的代码时(利益相关),就需要使用Lic ...

  7. 加密Python代码的5种方法

    Python越来越热门了,2022年1月编程语言排行榜上挤进第一. Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Python也有一些不可掩盖的缺点,版本不兼容,运行 ...

  8. Python代码加密方案

    Python代码加密方案 方案1:使用Pyarmor工具进行加密 PyArmor 是一个用于加密和保护 Python 脚本的工具.它能够在运行时刻保护 Python脚本的二进制代码不被泄露,设置加密后 ...

  9. c调用python脚本如何获取结果_使用C++调用Python代码的方法详解

    一.配置python环境问题 1.首先安装Python(版本无所谓),安装的时候选的添加python路径到环境变量中 安装之后的文件夹如下所示: 2.在VS中配置环境和库 右击项目->属性-&g ...

最新文章

  1. 用java编写打印时间_编写一个java程序,读取系统时间,然后将时间用中文输出...
  2. Windows 7服务器版 2008 R2安装图解
  3. 对大文件进行只打印过滤条件到列表元素(优化)
  4. C#为null或Empty
  5. 2018大华软件大赛模拟赛第4题 (某股票操盘手账户里有N支股票,股价互不等)
  6. 相克军_Oracle体系_随堂笔记011-事物
  7. 今天的C位,必须是这位浙大卜教授!
  8. dedecms(织梦)采集规则规则宝典
  9. 设计师点评互联网巨头Logo
  10. Cyclone IV E资源结构与重点电路
  11. 如何用计算机设计动画,用电脑制作3D动画的详细过程是怎样的?
  12. 任务栏WPS出现多窗口预览?下载这个注册表就对了
  13. HNU-电子测试平台与工具-元器件及测量基础
  14. centos7的网卡重启方法
  15. Istio官方文档翻译
  16. 基于python的国内外研究现状怎么写_如何撰写国内外研究现状评述
  17. 【攻略】前端突击队 - 腾讯CodeStar代码星计划第二季
  18. Java 编程中,有哪些好的习惯应该从一开始就值得坚持?
  19. Badboy录制模式
  20. 让你终身不发火的5个字

热门文章

  1. 福昕阅读器无法添加书签
  2. 读书笔记∣元数据:用数据的数据管理你的世界 Ch.3-4
  3. 东软Unieap平台
  4. JAVA-ApplicationContext的使用
  5. 高通滤波器与低通滤波器
  6. Exemplar-based image inpainting(+code)
  7. 服务器bios上传文件,巧改BIOS设置 让文件服务器性能提升10%
  8. 设置Word文档密码的两种方式
  9. 双曲函数 tanh是什么函数
  10. 抖音怎么实现落地页跳转微信加好友?