python代码使用cython进行加密
2021/7/19 14:36:26
本文主要是介绍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': break if (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进行加密的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程