Python代码加密 - 4种方案

Python代码加密 - 4种方案

  1. 发行.pyc文件(👍)
  2. 代码混淆(👍)
  3. 使用py2exe(仅限windows)
  4. 使用Cython(兼容性差)

1、发行 .pyc文件

1)原理

.pyc文件 : 二进制文件,无法看出源码内容。

python执行代码原理:代码 —> .pyc文件 —> 解释执行.pyc文件中内容。

因此,python解释器也可以直接执行.pyc文件

2)步骤

使用python标准库自带的 compileall即可。

# 遍历<path>目录下所有的.py文件,编译成.pyc文件
python -m compileall <path>

# .pyc文件也可直接执行,下面两者效果相同
python scriptStudy.py
python scriptStudy.pyc

在这里插入图片描述

3)优点
  • 简单方便,提高源码破解门槛
  • 平台兼容性好,.py能在哪运行,.pyc就能在哪运行
4)缺点
  • 解释器兼容性查,.pyc只能在特定版本的解释器上运行

  • 有现成的反编译工具,破解成本低

    • python-uncompyle6 就是这样一款反编译工具

    • # 将.pyc文件反编译为.py文件
      uncompyle6 *compiled-python-file-pyc-or-pyo*
      

2、代码混淆

1)原理

通过一系列的转换,让代码逐渐不让人那么容易明白。

主要有以下几种手段:

  • 移除注释和文档。没有这些说明,在一些关键逻辑上就没那么容易明白了。
  • 改变缩进。完美的缩进看着才舒服,如果缩进忽长忽短,看着也一定闹心。
  • 在tokens中
如果您想加密一个文件夹或zip文件,可以使用Python中的加密库来实现。以下是一些常用的加密库: 1. pyAesCrypt:这是一个用于加密和解密文件的Python库。它使用AES加密算法,并且可以处理大文件。 2. cryptography:这是一个用于加密和解密数据的Python库。它支持多种加密算法,包括AES、DES、RSA等。 3. PyCrypto:这是一个Python密码库,支持多种加密算法,包括AES、DES、RSA、Blowfish等。 下面是使用pyAesCrypt加密文件夹或zip文件的代码示例: ```python import pyAesCrypt import os # 定义加密函数 def encrypt_folder(password, src_folder, dest_zip): bufferSize = 64 * 1024 pyAesCrypt.encryptFile(src_folder, dest_zip, password, bufferSize) # 定义解密函数 def decrypt_folder(password, src_zip, dest_folder): bufferSize = 64 * 1024 pyAesCrypt.decryptFile(src_zip, dest_folder, password, bufferSize) # 加密文件夹 password = "mypassword" src_folder = "myfolder" dest_zip = "myfolder.zip" encrypt_folder(password, src_folder, dest_zip) # 解密文件夹 src_zip = "myfolder.zip" dest_folder = "myfolder_decrypted" decrypt_folder(password, src_zip, dest_folder) ``` 在上面的代码中,我们使用pyAesCrypt库来加密和解密文件夹。首先,我们定义了两个函数:encrypt_folder和decrypt_folder,分别用于加密和解密文件夹。接着,我们定义了一个密码变量和两个文件路径变量,用于指定要加密的文件夹和加密后的zip文件。最后,我们调用encrypt_folder函数来加密文件夹,调用decrypt_folder函数来解密文件夹。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值