python代码的几种常见加密方式
2022年6月29日10:40:53
文章目录
- Python代码加密
- 1.发行.pyc文件
- 2.代码混淆
- 3.生成exe可执行文件
- 4..py文件转化为.so文件
- 5.附加运行辅助包文件
- 几种加密方式对比:
Python代码加密
Python的文件类型介绍:
.py python的源代码文件
.pyc Python源代码import后,编译生成的字节码
.pyo Python源代码编译优化生成的字节码。pyo比pyc并没有优化多少,只是去掉了断言
.pyd Python的动态链接库(Windows平台)
.so
常见的源码保护手段有如下几种:
1.发行.pyc文件
pyc文件是py文件经过编译后生成的二进制文件,python提供py_compile内置模块把py文件编译为pyc文件,得到的.pyc文件可以直接运行python xxx.pyc
.pyc只能在特定版本的解释器上运行
1.1 编译加密:
mian.py
def spread(arg):ret = []for i in arg:if isinstance(i, list):ret.extend(i)else:ret.append(i)return ret
def deep_flatten(lst):result = []result.extend(spread(list(map(lambda x: deep_flatten(x) if type(x) == list else x, lst))))return result
print(deep_flatten([1, [2], [[3], 4], 5]))
编译指令:
python -m py_compile main.py
python -m compileall main.py
批量
1.2 是否可逆:
- .pyc加密现成的反编译工具,可以反编译得到源代码.
- 使用uncompyle库进行反编译
可逆
测试:
pip install uncompyleuncompyle6 main.cpython-38.pyc > main.py
1.3是否影响模块调用:
不影响使用
# coding=utf-8
# 调用模块main
from main import deep_flattenprint(deep_flatten([1, [2], [[3], 4], 5]))
2.代码混淆
- 在线工具 http://pyob.oxyry.com/
1.1 降低代码可读性
1.2 不影响模块之间调用
3.生成exe可执行文件
使用py2exe
py2exe是将Python代码转换为 Windows 平台上的可执行文件的工具,只能在windos上使用,原理是译为 .pyc 文件,加上一些动态连接依赖文件,一起打包成一个可执行文件。
pip install py2exe
需要编写setup.py文件
#!/usr/bin/env python
from distutils.core import setup
import py2exesetup(console=[f'E:\_Py_Project\leanPy\work\代码加密\main1.py'])
然后执行 python setup.py py2exe
1.1 是否可逆:
不可逆
1.2 是否影响模块调用
不影响
4…py文件转化为.so文件
生成使用 Cython
它的原理:将 .py/.pyx 编译为 .c文件,再将 .c文件编译为 .so(Unix) 或 .pyd(Windows)
pip install Cython
setup.py
from distutils.core import setup
from Cython.Build import cythonizesetup(name='main1',ext_modules=cythonize(f'E:\_Py_Project\leanPy\work\代码加密\main1.py'))
python setup.py build_ext
在windos下生成.pyd文件
测试 .pyd文件,把mian1.py删除,把.pyd文件移动到.py原来目录下
在linux下生成.so文件
测试:
1.1 是否可逆:
不可逆
1.2 是否影响模块调用
不影响
5.附加运行辅助包文件
PyArmor
https://pyarmor.dashingsoft.com/index-zh.html
pip install pyarmor==6.8.1
pyarmor obfuscate main.py
同目录下所有的 *.py文件都会被加密
方式一:高级加密模式,需要引导代码
方式二:超级加密模式
超级模式只需要一个运行辅助文件,没有了所谓的引导代码
pyarmor obfuscate --advanced 2 .\main1.py
方式三: 虚拟加密模式
高级 + 虚拟
pyarmor obfuscate --advanced 3 .\main1.py
超级 + 虚拟
pyarmor obfuscate --advanced 4 .\main1.py
辅助文件和编译文件
几种加密方式对比:
加密方式 | 是否可逆 | 是否影响模块调用 | 平台要求 |
---|---|---|---|
.pyc文件 | 是 | 否 | 否 |
代码混淆 | 是 | 否 | 否 |
生成exe可执行文件 | 否 | windos | |
.py文件转化为.so文件 | 否 | unix | |
附加运行辅助包文件 | 否 | 否 |
python代码的几种常见加密方式相关推荐
- 【Python】python代码的5种常见加密方式
目录 五种加密方式: 1.发行.pyc文件 1.1 编译加密 2.代码混淆 3.生成exe可执行文件 4 .py文件转化为.so文件 5.附加运行辅助包文件 5.1 高级加密模式,需要引导代码 5.2 ...
- android登录加密传输,android环境下两种md5加密方式(示例代码)
在平时开发过程中,MD5加密是一个比較经常使用的算法,最常见的使用场景就是在帐号注冊时,用户输入的password经md5加密后,传输至server保存起来.尽管md5加密经经常使用.可是md5的加密 ...
- Python与常见加密方式
Python与常见加密方式 前言 数据加密与解密通常是为了保证数据在传输过程中的安全性,自古以来就一直存在,古代主要应用在战争领域,战争中会有很多情报信息要传递,这些重要的信息都会经过加密,在发送到对 ...
- Pycharm中运行Python代码的几种方式
Pycharm中运行Python代码的几种方式 在pycharm中的Python代码运行会出现各种奇葩的问题,比如,密码输入时不显示或没有提示,给我们带来一些麻烦,下面介绍几种代码运行的几种方式: 一 ...
- 密码学之常见加密方式(05)
常见加密方式 文章目录 常见加密方式 前言 一.对称加密 二.DES加密 三.DES解密 Base64 算法简介 Base64 算法原理 Base64 构成原则 四.base64补等号测试 五.AES ...
- MySQL 异常:这一篇就够了,MySQL 抛出异常的几种常见解决方式小结
Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connectio ...
- Python代码中的三大常见“愚形”,你中招了吗?
愚形,是围棋的专业术语,凡是效率低下且不美观的棋形,统称为愚形.比如空三角和团子,就是典型的愚形.低水平棋手经常会在无意中走出愚形,而那些高手平棋手,尽管在生死存亡的危机时刻也会用愚形求生或者逃命,但 ...
- 在线视频常见加密方式及安全性透析
信息化时代,多媒体的应用日渐成为人们生活中不可或缺的部分,无论是获取最新资讯还是教育学习,视频都是直观高效的媒介之一. 基于互联网的快速传播,众多培训机构也逐渐将线下原创版权课程迁移到在线平台中,一方 ...
- Python常见加密方式总结和实现
一.前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes. 所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错. ...
最新文章
- 小程序工程化实践(上篇)-- 手把手教你撸一个小程序 webpack 插件,一个例子带你熟悉 webpack 工作流程...
- Confluence 6 系统运行信息中的 JVM 内存使用情况
- [密码学] 双重与三重DES
- centos7杀掉进程_Linux下强制杀死进程的方法详解
- c3p0依赖导入失败问题
- 网易邮箱大师如何定时发送 定时发送邮件方法步骤详解
- Vue (响应式原理-模拟-0)
- Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class
- linux设置ntp开机同步时间同步,linux ntp时间同步
- 程序员常用的泛型机制究竟怎么玩?
- [TCP/IP] TCP建立与终止
- RESTful登录设计(基于Spring及Redis的Token鉴权)
- 打印机显示正在未连接服务器,打印机状态未联机是怎么回事
- 人事面试java需要注意点_程序员hr面试注意事项
- electron 获取电脑mac地址遇到的坑
- 零基础学DevOps必看教程,带你10分钟快速实战入门DevOps
- BigDecimal的8种round舍入模式
- 常用流程图符号和基本流程图
- java win8 任务管理器_笔记本win8系统如何使用快捷键打开任务管理器
- XML fragments parsed from previous mappers already contains value for XXX
热门文章
- Android:如何通过adb控制手机
- 安卓手机来电防火墙_手机联系人怎么加入黑名单
- java实现HTTP的POST协议的方法
- 【Django项目开发】角色管理模块的开发(八)
- 快速入门html、css和javascript
- Visual Studio使用技巧
- 力扣(LeetCode)390. 消除游戏(2023.01.23)
- storyboard 苹果启动图_iOS13最新LaunchScreen.storyboard 启动图屏幕适配
- Apache doris BE配置参数说明
- JS中before与after的使用