之前工作中需要使用到对python代码进行加密,因为许多核心代码设计到重要信息,不能暴露给客户。但是python作为一种脚本语言,既要保证运行部署方便又要考虑到代码破译的安全性问题。

编译加密

编译加密就是常见的将python代码编译成为以后缀.pyc的文件,虽然不影响使用与部署,但是可以被反编译,直接使用uncompyle库进行反编译即可得到结果

代码混淆

代码混淆在我之前的记录当中提起过,网站

优点:

  • 简单
  • 不可逆
  • 不影响逻辑

缺点:

  • 对于项目来说不友好
  • 混淆不可控
  • 逻辑依然可读

打包成exe文件

python可以使用pyinstaller将文件打包成exe文件,但是对于项目部署来说几乎全是缺点:

  • 内部路径找不到
  • 资源文件不好打包
  • 部署使用麻烦
  • 难以控制

生成使用 Cython

它的原理:将 .py/.pyx 编译为 .c文件,再将 .c文件编译为 .so(Unix) 或 .pyd(Windows)

1
pip install Cython

优点:

  • 不可逆
  • 不影响使用

缺点:

  • 打包麻烦
  • 维护麻烦

PyArmor

这是一个python代码加密库,不影响项目结构进行加密,支持多种加密方式,部署也不受影响。但是不能调试!是当前觉得最好的加密方法,附上网站教程