0基础跟我学python 七、加密python代码

2025-10-16 12:30:54

1、我们先来看看加密后的效果。

可以看到,我们用cat查看这个叫test.pyc的程序,除了注释。我们的代码都变成了一个我们看不懂的代码(非python代码)。或者说乱码。

0基础跟我学python 七、加密python代码

2、我们试试这个加密后的文件是否可以运行?

0基础跟我学python 七、加密python代码

3、加密方式有两种:

第一,通过一个import导入模块的方式,调用py_compile来生成加密后的py文件

第二,通过解释器加载模块的方式

加密形式有两种:

pyc文件:这是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。

pyo文件:pyo也是优化后的py程序,针对嵌入式系统,把需要的模块编译成pyo文件可以减少容量。

0基础跟我学python 七、加密python代码

4、我们先来看看第一种方式。

我们先用它来生成pyc文件。

通过导入py_compile内置模块来生成加密的python程序。

在这里我们需要建立两个py程序,一个作为加密程序,另外一个作为被加密程序。(其实说把它编译成字节码会更适合,╮( ̄▽ ̄")╭)

我们先来建立第一个程序。就叫p_compile.py吧(注意一点,我们的文件名不要和模块名相同,切记)。

touch p_compile.py

0基础跟我学python 七、加密python代码

5、建立第二个文件。

就叫mypy.py吧。

0基础跟我学python 七、加密python代码

6、vim打开p_compile.py。

代码如下:

#!/usr/bin/python

import py_compile

#导入内置的py_compile模块

py_compile.compile("mypy.py")

0基础跟我学python 七、加密python代码

7、vim打开my.py

调用print随便打印什么。

print("hey,pyc");

0基础跟我学python 七、加密python代码

8、改完运行权限后,我们直接来看看结果。

先ls -l看看当前目录有什么文件。

0基础跟我学python 七、加密python代码

9、./p_compile.py运行。让它去编译我们的mypy.py文件。

然后ls -l看看有什么变化?

0基础跟我学python 七、加密python代码

10、我们用vim和cat分别看看这个编译后的字节码文件。

0基础跟我学python 七、加密python代码

0基础跟我学python 七、加密python代码

11、运行这个字节码文件。

python mypy.pyc

这里注意一点,我们是不能直接./mypy.pyc的方式运行的,因为这是字节码文件,它没有解释器路径(因为这是个挂平台的字节码),如果这台linux,我们的python是在/usr/bin/python没错,可能在bsd上就不是这个路径,所以,pyc是没办法./直接运行的,要通过解释器调用运行。

0基础跟我学python 七、加密python代码

12、还有一种办法可以生成pyc文件,就是通过python解释器加载模块的方式

我们先rm -f mypy.pyc删除这个pyc文件。

然后python -m py_compile mypy.py生成pyc文件。

0基础跟我学python 七、加密python代码

13、我们直接python mypy.pyc试试看?

0基础跟我学python 七、加密python代码

1、pyo目前没办法通过内置的py_compile模块生成,但是可以通过compile函数来实现(后面的经验会说这一点)

我们通过参数-O(大写O,不是零),来生成pyo文件。

但是要和pyc文件一起生成。

我们先把pyc删掉。

rm -f pyc

我们只要python -O -m py_compile mypy.py即可生成pyc和pyo

0基础跟我学python 七、加密python代码

2、再看看结果?

注意的是,pyo也和pyc一样,只能打开python解释器直接解释运行,不能通过./*.py的方式。

0基础跟我学python 七、加密python代码

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢