python代码加密

  • 前言
  • 加密的多种方式
  • Cython加密
    • 步骤
    • 注意
  • 部署

前言

加密的多种方式

  1. 发布编译过的pyc文件
    缺点:很容易被反编译
  2. PyInstaller 是一个用来将 Python 程序打包成一个独立可执行软件包,支持 Windows、Linux 和 Mac OS X。
    缺点:不同系统需要不同的包。
  3. cython。可以防止反编译和破解
    缺点:可能需要完善不支持的部分代码。
  4. 修改字节码定义并且发布pyc:这样你的代码将无法在标准Python解释器/VM上运行,标准的反编译器也无法反编译你的程序。
    缺点:需要自带能够支持你私有字节码定义Python解释器/VM
  5. 对按标准字节码定义生成的pyc文件进行字节码混淆,混淆后的程序可以欺骗反编译器以及反汇编器,但仍然能够被Python解释器/VM正确执行。
  6. 源码混淆:源码混淆替换函数名,变量名为人眼难以正确处理的字符串。
    缺点: 逻辑层不变。只是加大了一点 阅读障碍。
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、执行

  1. 拷贝setup.py到项目同级,执行命令,进行编译。加密目录下会生成.c和.so文件
python setup.py build_ext --inplace
  1. 拷贝setup.py到工程内,执行命令,删除.c和.py源文件
python setup.py
  1. 删除‘pycache’文件夹和pyc文件,命令需要配置正确路径
find xx/hn_docs_center -name "__pycache__" |xargs rm -rf

注意

  1. 每个model类中都必须配置app_label属性
  2. linux上部署的话需要在linux环境进行编译。linux、mac和wins编译不通用
  3. 加密完成后删除py文件后,重复加密会报错,提示没有源文件。(不能重复加密)

部署

省略

python代码使用cython进行加密相关推荐

  1. Cython入门:将python代码转为cython

    前言 本节不具体讲解cython的原理和细节,提供一个最简单的例子,将一个python代码转化为一个cython代码,同时由于本人对cython刚入门,只会一个简单的操作,即在cython中声明变量的 ...

  2. 几行python代码批量对身份证加密

    为保证客户个人关键信息安全,需要对客户四要素:身份证号.手机号.姓名.银行卡等要素进行特定加密,以密文的方式进行业务工作的传输.我们都知道md5.sha256.sm3d等加密方式是无法逆向解密的,是一 ...

  3. 分形几何python代码_Python, Cython绘制美妙绝伦的Mandelbrot集, 曼德博集分形图案

    上世纪60-70年代,美籍数学家曼德博 - Benoit B. Mandelbrot几乎单枪匹马的创立了一个新的数学分支,即分形几何学 - fractal geometry.这个新的数学分支有助于人类 ...

  4. python代码如何加密

    Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Pyhton也有一些不可掩盖的缺点,版本不兼容,运行效率不高等等. 其中一个缺点,让不少开发者头疼不已,由于Python ...

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

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

  6. cython python3_30倍!使用Cython加速Python代码

    原标题:30倍!使用Cython加速Python代码 作者:George Seif.Thomas Wolf.Lukas Frei 编译:1+1=6 | 公众号海外部 前言 你可能经常会一次又一次地听到 ...

  7. Python暴力破解教程: Zip加密文件, pdf加密书籍在线爆破!

    点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明 ...

  8. 使用python破解简单的JavaScript加密的网站

    目标网站:http://ac.scmor.com/ 抓取内容: 第一步 分析这个网站使用什么请求加载的,get,post,或者ajax异步加载?大家都知道用fiddler抓包或者F12网页进行查看.在 ...

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

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

最新文章

  1. Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上
  2. 30个流行的jQuery Plugins
  3. PE学习(一)masm32开发环境和ollyICE使用
  4. 5G NR中的两套绝对频域位置:GSCN和ARFCN
  5. **【ci框架】精通CodeIgniter框架
  6. 西瓜书+实战+吴恩达机器学习(一)机器学习基础(数据集划分、分类回归评估指标)
  7. Python之网络编程(Socket)
  8. R语言 par()函数
  9. java ldap tls_ldap之tls 双向认证要我命
  10. 自适应方案比较及案例
  11. vue使用node-sass@4.9.0时,npm intall出错
  12. 【DBAI】《基于机器学习的数据库技术综述》
  13. C语言判断上三角矩阵
  14. Window.iso镜像文件下载
  15. 完美解决cannot import name ‘_validate_lengths‘ from ‘numpy.lib.arraypad‘错误
  16. 小象学院深度学习之TensorFlow高级实战
  17. 排球分组循环交叉编排_同学!中国海洋大学第一届排球联赛等你来战!
  18. 【通讯录教程】Excel表格批量手机号码导入安卓和苹果手机的通讯录,下面教你方法
  19. java获取浏览器url_java 打开浏览器 url
  20. java 二进制运算

热门文章

  1. 怎么恢复删除的微信聊天记录?手残党终于有救了
  2. 在等吴恩达深度学习第5课的时候,你可以先看看第4课的笔记
  3. Coggle打卡——Linux使用基础
  4. DM8更换产品授权,更换KEY
  5. java计算机毕业设计springboot+vue度假山庄酒店管理系统
  6. 【高通SDM660平台 Android 10.0】(14) --- Camera ISP
  7. python办公自动化(4)拆分表格
  8. chrome浏览器最新离线版下载 30-72版本全
  9. 官方活动|最高可免费领60天会员时长
  10. No valid crumb was included in the request