iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python代码的几种常见加密方式分享
  • 458
分享到

python代码的几种常见加密方式分享

2024-04-02 19:04:59 458人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1.发行.pyc文件1.1 编译加密1.2 是否可逆1.3是否影响模块调用2.代码混淆3.生成exe可执行文件4…py文件转化为.so文件5.附加运行辅助包文件方式

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 uncompyle
 uncompyle6 main.cpython-38.pyc > main.py

1.3是否影响模块调用

不影响使用

# coding=utf-8
# 调用模块main
from main import deep_flatten
print(deep_flatten([1, [2], [[3], 4], 5]))

2.代码混淆

在线工具 

  • 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 py2exe
setup(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 cythonize
setup(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

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

辅助文件和编译文件

几种加密方式对比:

到此这篇关于python代码的几种常见加密方式分享的文章就介绍到这了,更多相关python加密方式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python代码的几种常见加密方式分享

本文链接: https://www.lsjlt.com/news/119544.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python代码的几种常见加密方式分享
    目录1.发行.pyc文件1.1 编译加密1.2 是否可逆1.3是否影响模块调用2.代码混淆3.生成exe可执行文件4…py文件转化为.so文件5.附加运行辅助包文件方式...
    99+
    2022-11-11
  • Python常见的几种数据加密方式
    目录一、md5加密解密增加破解成本的方法SHA1安全哈希算法二、Base64伪加密三、DES/AESAES和DES的区别破解方法四、RSA非对称加密算法使用流程和场景介绍公钥私钥生成...
    99+
    2022-11-11
  • python 统计代码耗时的几种方法分享
    目录时间戳相减 装饰器 timeit模块 重复调用 timeit()cProfile性能分析工具 时间戳相减 在代码执行前后各记录一个时间点,两个时间戳相减即程序运行耗时。 获取时...
    99+
    2022-11-12
  • 常用的android加密方式有哪几种
    常用的Android加密方式有以下几种:1. 文件加密:通过对文件进行加密,确保文件内容的机密性,常见的文件加密算法有AES(Adv...
    99+
    2023-10-18
    android
  • python 下载文件的几种方式分享
    目录1 、一般同步下载2、 使用流式请求,requests.get方法的stream3 、异步下载文件4、 异步拆分下载文件5、注意1 、一般同步下载 示例代码: import...
    99+
    2022-11-12
  • java中实现分页的常见几种方式
    文章目录 1. 前言2. 先说结论3. 例子1. 数据库SQL的限制条件(limit、fetch)2. 使用List集合的截取功能实现3. 插件PageHelper 1. 前言 无论是...
    99+
    2023-08-31
    mybatis java 分页 数据库 PageHelper
  • 分析MySQL抛出异常的几种常见解决方式
    目录前言一、代码配置的数据库名称或者密码与本地数据库不一致1.1、错误产生描述1.2、解决方式二、导入的非本地项目文件与本地的数据库版本不匹配2.1、错误产生描述2.2、解决方式三、MySQL 高版本配置加载驱动类包...
    99+
    2022-05-19
    mysql 异常
  • 分享Vue组件传值的几种常用方式(一)
    目录前言第一种:父向子传值新建文件导入结构引入 注册 使用子组件子组件内部代码完善父组件内部代码完善操作main.js文件思路总结前言 大家好,这个系列我们来讲解一下vue组件传值的...
    99+
    2022-11-13
  • 分享Vue组件传值的几种常用方式(二)
    目录前言子向父传值一 文件配置及模板生成二 Son组件内部处理三 Father组件内部处理总结代码前言 大家好,在上一篇文章分享Vue组件传值的几种常用方式(一)中我们介绍了父组件向...
    99+
    2022-11-13
  • 分享jQuery的3种常见事件监听方式
    目录1.HTML标签内联事件2.用JavaScript实现事件监听3.用jQuery实现事件监听前言: 在 Web 页面经常会有各种事件发生,事件发生后需要进行一些特定处理,即执行特...
    99+
    2022-11-13
  • Python中有哪些常见的加密方式
    Python中有哪些常见的加密方式,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的B...
    99+
    2023-06-02
  • Python代码部署的三种加密方案
    目录前言一、代码混淆二、代码打包三、代码编译3.1 pyarmor快速使用3.2 pyarmor进阶使用前言 最近需要源码部署一个项目,因此探索一下保护源码的方式,由简单到复杂主要总...
    99+
    2023-02-06
    Python代码加密 Python代码混淆 Python代码编译
  • javascript代码简写的几种常用方式汇总
    目录前言箭头函数掌握数组常见操作方法延展运算符对象简写解构赋值掌握数据类型转换的方法总结前言 本文主要介绍一些工作中常用的JavaScript编码技巧。非常有用,建议大家看完赶快实践...
    99+
    2022-11-12
  • Python常见的数据加密方式有哪些
    这篇文章主要介绍了Python常见的数据加密方式有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python常见的数据加密方式有哪些文章都会有所收获,下面我们一起来看看吧。前言:常见的加密算法基本分为这几类...
    99+
    2023-06-30
  • Python/JS实现常见加密算法的示例代码
    目录前言一、编码,加密二、常见编码1.Base642. Base64 - JS实现3. Base64 - Python实现4.Unicode5.Urlencode三、线性散列算法(签...
    99+
    2022-11-11
  • Python列表删除的三种方法代码分享
    1、使用del语句删除元素 >>> i1 = ["a",'b','c','d'] >>> del i1[0] >>> print(i1) ['b...
    99+
    2022-06-04
    三种 代码 方法
  • 一文详解Python中实现单例模式的几种常见方式
    目录Python 中实现单例模式的几种常见方式元类(Metaclass):装饰器(Decorator):模块(Module):new 方法:Python 中实现单例模式的几种常见方式...
    99+
    2023-03-22
    Python 单例模式 Python 单例
  • python字典添加值的方法及实例代码分享
    对于字典的操作,本篇介绍的是在其中添加值的方法,下面带来详细的介绍。 1、通过键=值的方式进行添加。如果键存在,则会将旧的值进行覆盖,如果不存在则添加。 addDic1 = { ...
    99+
    2022-11-21
    python 字典 添加值
  • Java实现支付对接常用加密方式的示例代码
    目录一、术语表1.对称算法2.非对称算法3.可逆加密算法4.不可逆算法5.加密盐二、传统加密算法介绍DES(Data Encryption Standard)AES算法RSA算法MD...
    99+
    2023-02-09
    Java实现支付加密方式 Java支付加密 Java 加密
  • Java方法递归的形式和常见递归算法代码分析
    本篇内容介绍了“Java方法递归的形式和常见递归算法代码分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!方法递归方法递归的形式什么是方法递...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作