python源码的加密方案有很多种。下面我们就来了解一下PyArmor是如何加密python的。一、PyArmor简介PyArmor是一个命令行工具,用于混淆python脚本,将混淆后的脚本绑定到固定的机器上,或者使混淆后的脚本在一定时间后过期。可以通过pyarmor-h查看其使用方法,下面只截取部分进行说明:(tt)PSC:\test>pyarmor-husage:pyarmor[-h][-v][-q][-d][--homeHOME][--bootBOOT]...可选参数:-h,--help显示此帮助信息并退出-v,--version显示程序的版本号并退出-q,--silent抑制所有正常输出-d,--debug打印异常回溯和调试消息--homeHOME更改pyarmorhome路径--bootBOOT更改启动平台最常用的pyarmor命令是:obfuscate(o)Obfuscatepythonscriptslicenses(l)Generatenewlicensesforobfuscatedscriptspack(p)将混淆脚本打包成一个bundleinit(i)创建一个项目来管理混淆脚本config(c)更新项目设置build(b)混淆项目中的所有脚本info显示项目信息check检查项目的一致性hdinfo显示所有可用的硬件信息基准Runbenchmarktest在当前机器registermakeregistrationkeyfileworkdownload下载依赖平台的动态库runtime单独生成运行时包help显示在线文档具体命令见“pyarmor-h”更多用法参考https://pyarmor.readthedocs.io(一)pyarmor的主要功能使用命令obfuscate对脚本进行加密使用命令licenses为加密后的脚本生成一个新的许可证文件license.lic,如果需要设置使用期限加密脚本或限制脚本在特定机器上的使用,需要生成新的许可证文件并使用新的许可证文件加密脚本。可以加密整个python包。可以配合pyinstaller将python项目打包成一个独立可执行的安装包。你也可以使用它提供的一些解决方案来进一步提高加密脚本的安全性,实际项目需要的时候可以参考它的官网。2.使用示例(1)安装pipinstallpyarmor-ihttps://pypi.douban.com/simple/-ihttps://pypi.douban.com/simple/是使用国内豆瓣源来提高安装速度,详见我的其他文章。(2)通用加密#module1.py内容如下defmodule1_func1():print("I'mmodule1.py")return#main.py内容如下importmodule1print("I'mmain.py")module1.module1_func1()。运行命令加密:pyarmoromain.py。PyArmor会对同一目录下的main.py和所有*.py文件进行加密,并生成一个dist文件夹,其中包含运行加密脚本所需的所有文件。基本过程:创建输出子目录dist。生成加密的主脚本main.py保存在输出目录dist中。加密同一目录中的所有其他*.py文件并将它们保存到输出目录dist。生成运行加密脚本所需的所有辅助文件,并将它们保存到输出目录dist。验证:进入dist目录,pythonmain.py。加密文件如下所示:frompytransformimportpyarmor_runtimepyarmor_runtime()__pyarmor__(__name__,__file__,b'\x50\x59\x41\x52\x4d\x4f\x52\x00\x00\x03\x08\x00\x55\x0d\x0d\x0a\x09\x33\xe0\x02\x00\x00\x00\x00\x01\x00\x00\x00\x40\x00\x00\x00\x63\x01\x00\x00\x00\x00\x00\x18\x26\xa4\x75\x12\x0c\x32\x8f\xd9\xa6\xf8\x0a\x0b\x17\x1e\xc7\xfe\x00\x00\x00\x00\x00\x00\x\x22\x0c\xa0\x75\x0c\x1a\x13\x8a\x26\xb4\x02\x46\x1b\x8c\x5d\xaf\xd0\x81\xc2\x22\x59\xc0\x1d\xd2\x83\x99\x01\x09\xb1\x78\x4c\xdc\x58\x9b\xdf\x17\xd9\xe9\x07\xa4\xa7\xc6\x51\xde\xaa\x20\xbf\x7c\x43\xbb\x83\x87\xaf\x82\x9e\x65\x2d\xae\xb9\x5b\x14\xfc\xf8\x1d\xc7\x09\xe5\x65\xa7\x8d\x5a\x62\x9d\x78\xa3\x82\x4c\x53\x17\xc9\x3a\x15\xa4\xe7\x66\xda\x3f\xf2\x9d',2)还会根据不同的平台生成相关的依赖:在pytransform文件夹下,比如windows会生成相关依赖。dll,linux生成.so等(三)使用licenses加密1.生成新的license文件pyarmorl-e2022-09-09test01执行这条命令会生成一个有有效期的证书文件:createlicense.lic和license.lic.txt,并保存在licenses/test01目录下2.使用新生成的license文件加密脚本pyarmoro--with-license.\licenses\test01\license.licmain.py3。在dist目录下也可以找到相关信息。如果此时过期,会提示:Licenseisexpired(4)也可以绑定固定机器1.在本机运行命令获取硬件信息pyarmorhdinfo2。然后生成绑定的固定机pyarmorl--bind-disk"100304PBN2081SF3NJ5T"--bind-mac"20:c1:d2:2f:a0:96"code-0023的license文件。使用此许可文件对脚本进行加密,加密后的脚本只能在指定的机器上运行网站:https://pyarmor.readthedocs.io/en/latest/。