加密Python代码的5种方法
Python越来越热门了,2022年1月编程语言排行榜上挤进第一。
Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Python也有一些不可掩盖的缺点,版本不兼容,运行效率不高等等。
其中一个缺点,让不少开发者头疼不已,由于Python解释器开源的关系,导致Python代码无法加密,代码的安全性得不到保障。
当然,想要加密Python代码,也并非无解。最常见的加密方式有4种,还有1种独特的加密方式。
一、发布成pyc文件
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
二、代码混淆
代码混淆,也是一种常见的“加密”方式,严格意义上说,这一方法并不是加密,而是上代码的可读性变差。比如删除注释,添加毫无意义的注释,添加无效代码,对变量、函数、类进行重命名等。
内容不可读,代码就受到了保护。
代码混淆的工具很多,一个比较好用的混淆库是pyobfuscate(GitHub - astrand/pyobfuscate: pyobfuscate)。这个库可以对类、函数进行重命名,并且插入无关的代码,甚至自动加空格等等。
这一方法很简单,也提高了破解的门槛。但由于代码结构未发生变化,字节码也能获取,破解难度也不高。
一般而言,使用这一方式较为简单,实用。
三、打包成exe文件
如果有一款工具,可以将Python脚本打包成在某一平台的可执行文件,最终我们发行的,是一份打包完成的二进制文件,那么程序就更难被破解了?
py2exe(FrontPage - py2exe.orgFrontPage - py2exe.org)就是一款很好的打包工具,可以将Python脚本打包成可在Windows上运行的文件。
这一方式的优点是进一步提高了破解门槛。遗憾的是,你只能在windows上运行它。
四、Cython加密
Python运行速度慢何解?用Cython就可以带来性能的提升。实际上,Cython也可以用来加密Python代码。
Cython的原理是,将.py编译为.c文件,再将.c文件编译为.so或者.pyd,这样一来,文件就变得难以破解了。
这样做的好处是,Python代码很难被破解,缺点是有时候,Cython可能不支持一小部分代码,完善起来就比较麻烦了。
五、修改python解释器
最后一种方法,做得比较绝。
由于Python是解释型语言,因此在发行Python程序的时候,就必须包含一个Python解释器,如果我们修改这个解释器,代码不就被保护起来了吗?
如果我们能对最原始的Python代码进行加密,加密后的代码被发行后。哪怕被别人看到了,但因为不晓得算法是怎样的,就破解不了了。
这是因为Python解释器本身是一个二进制文件,自然也就无法获得关键性的数据,进而保护了源码。
虽然这一方法最为安全,可操作难度较高。你必须掌握基本的加解密算法,还要探究Python执行代码的方式,从而了解到从什么地方进行加解密。最后禁用字节码,以防通过.pyc反编译即可。
以上五种加密方式,有利有弊,有难有易,根据需求选择就可以了。
转自:https://blog.csdn.net/m0_59236602/article/details/122704211
加密Python代码的5种方法相关推荐
- pca算法python代码_三种方法实现PCA算法(Python)
主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...
- 在终端执行 Python 代码的 6 种方法,原来还能这样!
来自 | Python猫 编译 | 豌豆花下猫 原作 | BRETT CANNON 为了我们推出的 VS Code 的 Python 插件[1],我写了一个简单的脚本来生成变更日志[2](类似于To ...
- 优化Python代码的4种方法
介绍 作为数据科学家,编写优化的Python代码非常非常重要.杂乱,效率低下的代码即浪费你的时间甚至浪费你项目的钱.经验丰富的数据科学家和专业人员都知道,当我们与客户合作时,杂乱的代码是不可接受的. ...
- python画图-python画图的两种方法
python如何画图?这里给大家介绍两款python绘图的库:turtle和Matplotlib. 1 安装turtle Python2安装命令:pip install turtule Python3 ...
- Blurry Box加密技术使用的7种方法
Blurry Box加密技术包括七种方法,这七种方法结合起来,大大增加了破解难度.使得即使重新开发出一套新的软件,使用的时间和人力成本大大小于破解Blurry Box并逆向工程的成本.以下我们将说明B ...
- Python文本处理几种方法
Python文本处理几种方法 方法一:readline函数 #-*- coding: UTF-8 -*- f = open("D:\pythontest\splm_ugslmd.log&qu ...
- 优化JS代码的34种方法(上)
1. 含有多个条件的if语句 //longhand if(x === 'abc' || x === 'def' || x === 'ghi' || x == 'jkl'){//logic }//sho ...
- Pycharm中运行Python代码的几种方式
Pycharm中运行Python代码的几种方式 在pycharm中的Python代码运行会出现各种奇葩的问题,比如,密码输入时不显示或没有提示,给我们带来一些麻烦,下面介绍几种代码运行的几种方式: 一 ...
- 写出漂亮代码的七种方法
首先我想说明我本文阐述的是纯粹从美学的角度来写出代码,而非技术.逻辑等.以下为写出漂亮代码的七种方法: 1.尽快结束 if 语句 例如下面这个JavaScript语句,看起来就很恐怖: functi ...
最新文章
- 泛型java 代码讲解_Java泛型详解
- 用Java API实现HDFS操作(三)问题汇总
- Mybatis报错 TooManyResultsException
- 工业镜头选型计算公式_工业冷水机组制冷量的计算公式是什么?
- 【JS】使用变量作为object的key-方法汇总
- Hibernate-Criteria
- windows内核对象
- 【git】从零开始在git上部署自己的免费生日祝福网页
- php管理后台,后台管理主页面 admin.php
- mysql 存储微信表情
- java前后端分离解决session,解决前后端分离开发sessionId不一致问题
- rk356x-Android 刷机
- win10桌面快捷方式变白,解决方式
- antv g6对接后台数据_AntV - G6
- HDMI EDID timing详细解析
- 合同相似可逆等价矩阵的关系及性质_矩阵的合同,等价与相似的联系与区别.doc...
- Office 2021 简体中文 正式版 零售版 32位和64位 官方镜像下载合集
- [iOS]监控屏幕旋转
- RT_thread邮箱的使用
- 计算机程序是通过专利保护,《专利审查指南》修改后计算机程序的专利保护研究.doc...
热门文章
- C#已知两点(线段),求互相垂直平分两点(线段)。
- 在 Vue 项目中使用 ECharts(菜鸟)
- Java排序算法汇总
- 2023年Android黑科技保活方案,应用永生,拒绝强制杀死 最高适配Android 13 小米 华为 Oppo vivo 等最新机型 拒绝强杀 开机自启动 附demo apk 附研究资料
- 国家开放大学《国际经济法》第三章 国际货物运输法 边学边练
- Hive分析窗口函数
- 如何在Unity中实现震动反馈效果
- 一步一步,手把手带你用最简单的方法,在linux上安装anaconda
- 计算机专业课观后感,计算机基础知识读后感
- visual studio code注释快捷键怎么用?