python编译与加密

python文件加密处理办法
1、代码混淆
代码混淆是指在不改变代码逻辑的情况下,对代码结构进行变换,通过一些带有混淆性质的命名、注释等,使代码变得晦涩难懂,从而达到保护代码的作用。

2、打包为独立可执行程序
通过将 Python 文件打包为独立可执行程序也是一种保护源码的方式。有 Pyinstaller 、 py2exe 和 cx_Freeze 等多种打包程序可以使用。
Python 打包的 exe 程序并不是将文件编译为真正的机器码,而是将脚本编译为 pyc 后连同依赖文件、当前的 Python 解释器一同打包起来,根据命令参数生成文件夹或打包成单独的可执行文件。之后运行 exe 时,实际运行的是一个引导加载程序,引导加载程序会创建一个临时的 Python 环境,通过解释器副本来执行 pyc 文件。 
由于这种运行方式的特殊性,Pyinstaller 打包的 exe 文件也是可以被还原出源码的。

3、使用 PyArmor 加密代码
PyArmor 是一个用于加密和保护 Python 脚本的工具。它能够在运行时刻保护 Python 脚本的二进制代码不被泄露,设置加密后 Python 源代码的有效期限,绑定加密后的 Python 源代码到硬盘、网卡等硬件设备。
加密后的文件前两行代码是引导代码,用于加载 pytransform 动态链接库和添加三个内置函数到 builtins 模块,之后调用 __pyarmor__ 导入加密模块执行加密代码。加密后的文件目录还有一个名叫 pytransform 的运行辅助包,它是解密文件所必须的,因此打包加密文件时需要同时将运行辅助包打包进去。
PyArmor 使用分片式技术来保护 Python 脚本。所谓分片保护,就是单独加密每一个函数,在运行脚本的时候,只有当前调用的函数被解密,其他函数都没有解密。而一旦函数执行完成,就又会重新加密。这种方式相对于混淆来说,效果明显要好的多。
pyarmor-7 obfuscate --recursive li_flask_get_embs.py     #循环加密,即将文件夹中包含的文件夹一起加密
pyarmor-7 obfuscate  li_flask_get_embs.py                        #只加密当前文件下的所有py文件
pyarmor试用版限制为32768字节,单个文件限制大小为30KB,超出则会报错

测试环境:10.10.0.21 lw_py37

加密的代码需要在相同环境下运行,因此需要使用对应环境进行加密

4、编译为pyc文件
pyc 是由 py 文件经过编译后生成的二进制字节码(byte code)文件;

pyc 文件的加载速度比 py 文件快;

pyc 文件是一种跨平台的字节码,由 python 的虚拟机来执行;

pyc 文件的内容跟 python 版本相关,不同的 python 版本编译生成不同的 pyc 文件,只能在相同版本环境下执行

编译方法
利用compileall和py_compile来预编译 python 代码:
    python -m compileall test.py #把单个.py文件编译为字节码文件
    python -m compileall /path/src/ #批量生成字节码文件,/path/src/是包含.py文件名的路径python -m     py_compile test.py #把单个.py文件编译为字节码文件
    python -m py_compile /path/src/ #批量生成字节码文件,仅将/path/src/的下一层.py文件编译,不会递归执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值