python代码使用cython进行加密
python代码加密
- 前言
- 加密的多种方式
- Cython加密
- 步骤
- 注意
- 部署
前言
加密的多种方式
- 发布编译过的pyc文件
缺点:很容易被反编译 - PyInstaller 是一个用来将 Python 程序打包成一个独立可执行软件包,支持 Windows、Linux 和 Mac OS X。
缺点:不同系统需要不同的包。 - cython。可以防止反编译和破解
缺点:可能需要完善不支持的部分代码。 - 修改字节码定义并且发布pyc:这样你的代码将无法在标准Python解释器/VM上运行,标准的反编译器也无法反编译你的程序。
缺点:需要自带能够支持你私有字节码定义Python解释器/VM - 对按标准字节码定义生成的pyc文件进行字节码混淆,混淆后的程序可以欺骗反编译器以及反汇编器,但仍然能够被Python解释器/VM正确执行。
- 源码混淆:源码混淆替换函数名,变量名为人眼难以正确处理的字符串。
缺点: 逻辑层不变。只是加大了一点 阅读障碍。
pyobfuscate 代码混淆 def my_fuction_to_test ( self , start_date , end_date ) :iiiii11iII1 = self . get_something ( start_date , end_date )O0o = [ ]for oO0 in iiiii11iII1 :if oO0 [ "isOpen" ] == 1 :IIIi1i1I = { }OOoOoo00oo = dt . strptime ( oO0 [ 'calendarDate' ] , '%Y-%m-%d' )IIIi1i1I [ 'day' ] = OOoOoo00oo . strftime ( '%Y%m%d' )IIIi1i1I [ 'week' ] = oO0 [ 'isWeekEnd' ]IIIi1i1I [ 'month' ] = oO0 [ 'isMonthEnd' ]IIIi1i1I [ 'weekday' ] = OOoOoo00oo . weekday ( )O0o . append ( IIIi1i1I )iiI11 = pd . DataFrame ( O0o )return iiI11
Cython加密
Cython
的主要目的是带来性能的提升,但是基于它的原理:将 .py
/.pyx
编译为 .c
文件,再将 .c
文件编译为 .so
(Unix) 或 .pyd
(Windows),其带来的另一个好处就是难以破解。
不足:
步骤兼容性稍差,对于不同版本的操作系统,可能需要重新编译
虽然支持大多数 Python 代码,但如果一旦发现部分代码不支持,完善成本较高。
步骤
1、安装cython依赖
pip install Cython==0.29.22
2、配置setup.py文件
APP_ID = 'xxx'
# 需要编译的目录
dir_paths = ['apps/configs','account','common','component','component/utils','component/drf','component/drf/mixins','config']files = [APP_ID + '/' + i + '/*.py' for i in dir_paths]# 参数包含build_ext 说明是编译
if 'build_ext' in sys.argv:# 编译生成so文件setup(ext_modules = cythonize(files, exclude=['__init__.py']))
else:# 删除py和.c 文件for item in dir_paths:for dirpath, foldernames, filenames in os.walk(item):for file in filenames:if dirpath == item + '/migrations':breakif (file.endswith('.py') or file.endswith('.c') or file.endswith('.pyc')):os.remove(dirpath + '/' + file)
3、执行
- 拷贝setup.py到项目同级,执行命令,进行编译。加密目录下会生成.c和.so文件
python setup.py build_ext --inplace
- 拷贝setup.py到工程内,执行命令,删除.c和.py源文件
python setup.py
- 删除‘pycache’文件夹和pyc文件,命令需要配置正确路径
find xx/hn_docs_center -name "__pycache__" |xargs rm -rf
注意
- 每个model类中都必须配置app_label属性
- linux上部署的话需要在linux环境进行编译。linux、mac和wins编译不通用
- 加密完成后删除py文件后,重复加密会报错,提示没有源文件。(不能重复加密)
部署
省略
python代码使用cython进行加密相关推荐
- Cython入门:将python代码转为cython
前言 本节不具体讲解cython的原理和细节,提供一个最简单的例子,将一个python代码转化为一个cython代码,同时由于本人对cython刚入门,只会一个简单的操作,即在cython中声明变量的 ...
- 几行python代码批量对身份证加密
为保证客户个人关键信息安全,需要对客户四要素:身份证号.手机号.姓名.银行卡等要素进行特定加密,以密文的方式进行业务工作的传输.我们都知道md5.sha256.sm3d等加密方式是无法逆向解密的,是一 ...
- 分形几何python代码_Python, Cython绘制美妙绝伦的Mandelbrot集, 曼德博集分形图案
上世纪60-70年代,美籍数学家曼德博 - Benoit B. Mandelbrot几乎单枪匹马的创立了一个新的数学分支,即分形几何学 - fractal geometry.这个新的数学分支有助于人类 ...
- python代码如何加密
Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Pyhton也有一些不可掩盖的缺点,版本不兼容,运行效率不高等等. 其中一个缺点,让不少开发者头疼不已,由于Python ...
- 加密Python代码的5种方法
Python越来越热门了,2022年1月编程语言排行榜上挤进第一. Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Python也有一些不可掩盖的缺点,版本不兼容,运行 ...
- cython python3_30倍!使用Cython加速Python代码
原标题:30倍!使用Cython加速Python代码 作者:George Seif.Thomas Wolf.Lukas Frei 编译:1+1=6 | 公众号海外部 前言 你可能经常会一次又一次地听到 ...
- Python暴力破解教程: Zip加密文件, pdf加密书籍在线爆破!
点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明 ...
- 使用python破解简单的JavaScript加密的网站
目标网站:http://ac.scmor.com/ 抓取内容: 第一步 分析这个网站使用什么请求加载的,get,post,或者ajax异步加载?大家都知道用fiddler抓包或者F12网页进行查看.在 ...
- python代码加密cython_利用Cython对python代码进行加密
利用Cython对python代码进行加密 Cython是属于PYTHON的超集,他首先会将PYTHON代码转化成C语言代码,然后通过c编译器生成可执行文件.优势:资源丰富,适合快速开发.翻译成C后速 ...
最新文章
- Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上
- 30个流行的jQuery Plugins
- PE学习(一)masm32开发环境和ollyICE使用
- 5G NR中的两套绝对频域位置:GSCN和ARFCN
- **【ci框架】精通CodeIgniter框架
- 西瓜书+实战+吴恩达机器学习(一)机器学习基础(数据集划分、分类回归评估指标)
- Python之网络编程(Socket)
- R语言 par()函数
- java ldap tls_ldap之tls 双向认证要我命
- 自适应方案比较及案例
- vue使用node-sass@4.9.0时,npm intall出错
- 【DBAI】《基于机器学习的数据库技术综述》
- C语言判断上三角矩阵
- Window.iso镜像文件下载
- 完美解决cannot import name ‘_validate_lengths‘ from ‘numpy.lib.arraypad‘错误
- 小象学院深度学习之TensorFlow高级实战
- 排球分组循环交叉编排_同学!中国海洋大学第一届排球联赛等你来战!
- 【通讯录教程】Excel表格批量手机号码导入安卓和苹果手机的通讯录,下面教你方法
- java获取浏览器url_java 打开浏览器 url
- java 二进制运算
热门文章
- 怎么恢复删除的微信聊天记录?手残党终于有救了
- 在等吴恩达深度学习第5课的时候,你可以先看看第4课的笔记
- Coggle打卡——Linux使用基础
- DM8更换产品授权,更换KEY
- java计算机毕业设计springboot+vue度假山庄酒店管理系统
- 【高通SDM660平台 Android 10.0】(14) --- Camera ISP
- python办公自动化(4)拆分表格
- chrome浏览器最新离线版下载 30-72版本全
- 官方活动|最高可免费领60天会员时长
- No valid crumb was included in the request