Python越来越热门了,2019年3月TIOBE编程语言排行榜上,Python更是罕见的击败了“霸榜三巨头”之一的C++,挤进前三。 Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Pyhton也有一些不可掩盖的缺点,版本不兼容,运行效率不高等等。 其中一个缺点,让不少开发者头疼不已,由于Python解释器开源的关系,导致Python代码无法加密,代码的安全性得不到保障。 当然,想要加密Python代码,也并非无解。最常见的加密方式有4种,还有1种独特的加密方式。
1 Python解释器在执行代码的过程中,会首先生成.pyc文件,然后再解释执行.pyc中的内容,当然,解释器也能直接执行.pyc文件。 .pyc文件是一个二进制的文件,是不具备可读性的。 假如我们发到客户环境时,是.pyc文件,而不是.py,那么是不是就可以保护我们的Python代码? 想要做到这一点,并不难。Python标准库就提供了一个名叫compileall的库,使用它就可以做到。 执行如下命令,即可将<src>目录下的所有.py文件编译成.pyc文件: python -m compileall <src> 然后删除 <src> 目录下所有 .py 文件就可以了。 $ find <src> -name '*.py' -type f -print -exec rm {} \;
这一方法,可以加密我们的Python代码,胜过代码裸在外面。尴尬的是,因为Python解释器的兼容较差,有些版本并不能运行.pyc文件。而且已经有现成的反编译工具,可以直接**。
$ uncompyle6 *compiled-python-file-pyc-or-pyo*
|