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 是否可逆:

  1. .pyc加密现成的反编译工具,可以反编译得到源代码.
  2. 使用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.代码混淆

  1. 在线工具 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代码的几种常见加密方式相关推荐

  1. 【Python】python代码的5种常见加密方式

    目录 五种加密方式: 1.发行.pyc文件 1.1 编译加密 2.代码混淆 3.生成exe可执行文件 4 .py文件转化为.so文件 5.附加运行辅助包文件 5.1 高级加密模式,需要引导代码 5.2 ...

  2. android登录加密传输,android环境下两种md5加密方式(示例代码)

    在平时开发过程中,MD5加密是一个比較经常使用的算法,最常见的使用场景就是在帐号注冊时,用户输入的password经md5加密后,传输至server保存起来.尽管md5加密经经常使用.可是md5的加密 ...

  3. Python与常见加密方式

    Python与常见加密方式 前言 数据加密与解密通常是为了保证数据在传输过程中的安全性,自古以来就一直存在,古代主要应用在战争领域,战争中会有很多情报信息要传递,这些重要的信息都会经过加密,在发送到对 ...

  4. Pycharm中运行Python代码的几种方式

    Pycharm中运行Python代码的几种方式 在pycharm中的Python代码运行会出现各种奇葩的问题,比如,密码输入时不显示或没有提示,给我们带来一些麻烦,下面介绍几种代码运行的几种方式: 一 ...

  5. 密码学之常见加密方式(05)

    常见加密方式 文章目录 常见加密方式 前言 一.对称加密 二.DES加密 三.DES解密 Base64 算法简介 Base64 算法原理 Base64 构成原则 四.base64补等号测试 五.AES ...

  6. MySQL 异常:这一篇就够了,MySQL 抛出异常的几种常见解决方式小结

    Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connectio ...

  7. Python代码中的三大常见“愚形”,你中招了吗?

    愚形,是围棋的专业术语,凡是效率低下且不美观的棋形,统称为愚形.比如空三角和团子,就是典型的愚形.低水平棋手经常会在无意中走出愚形,而那些高手平棋手,尽管在生死存亡的危机时刻也会用愚形求生或者逃命,但 ...

  8. 在线视频常见加密方式及安全性透析

    信息化时代,多媒体的应用日渐成为人们生活中不可或缺的部分,无论是获取最新资讯还是教育学习,视频都是直观高效的媒介之一. 基于互联网的快速传播,众多培训机构也逐渐将线下原创版权课程迁移到在线平台中,一方 ...

  9. Python常见加密方式总结和实现

    一.前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes. 所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错. ...

最新文章

  1. 小程序工程化实践(上篇)-- 手把手教你撸一个小程序 webpack 插件,一个例子带你熟悉 webpack 工作流程...
  2. Confluence 6 系统运行信息中的 JVM 内存使用情况
  3. [密码学] 双重与三重DES
  4. centos7杀掉进程_Linux下强制杀死进程的方法详解
  5. c3p0依赖导入失败问题
  6. 网易邮箱大师如何定时发送 定时发送邮件方法步骤详解
  7. Vue (响应式原理-模拟-0)
  8. Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class
  9. linux设置ntp开机同步时间同步,linux ntp时间同步
  10. 程序员常用的泛型机制究竟怎么玩?
  11. [TCP/IP] TCP建立与终止
  12. RESTful登录设计(基于Spring及Redis的Token鉴权)
  13. 打印机显示正在未连接服务器,打印机状态未联机是怎么回事
  14. 人事面试java需要注意点_程序员hr面试注意事项
  15. electron 获取电脑mac地址遇到的坑
  16. 零基础学DevOps必看教程,带你10分钟快速实战入门DevOps
  17. BigDecimal的8种round舍入模式
  18. 常用流程图符号和基本流程图
  19. java win8 任务管理器_笔记本win8系统如何使用快捷键打开任务管理器
  20. XML fragments parsed from previous mappers already contains value for XXX

热门文章

  1. Android:如何通过adb控制手机
  2. 安卓手机来电防火墙_手机联系人怎么加入黑名单
  3. java实现HTTP的POST协议的方法
  4. 【Django项目开发】角色管理模块的开发(八)
  5. 快速入门html、css和javascript
  6. Visual Studio使用技巧
  7. 力扣(LeetCode)390. 消除游戏(2023.01.23)
  8. storyboard 苹果启动图_iOS13最新LaunchScreen.storyboard 启动图屏幕适配
  9. Apache doris BE配置参数说明
  10. JS中before与after的使用