gpt4 book ai didi

python - PGP/GPG 签名 Python 代码

转载 作者:太空狗 更新时间:2023-10-29 18:30:38 26 4
gpt4 key购买 nike

我想 (PGP/GPG) 签署 python 代码。是的,我读过this以及许多其他谈论保护混淆 python 代码的网站——这一切不是我想要的。我不想混淆代码。我希望客户和用户看到代码,他们可以修改代码、复制代码并制作衍生作品,我希望在 GPLv3 下拥有该软件。但我希望拥有“已签名”的插件,因此它们在执行过程中可以被信任

这在 Python 中可行吗?我可以在检查其 gpg 签名后导入库吗?简单的方法:检查文件的 gpg 签名,然后通过导入加载它,否则引发异常。但这只适用于单个文件导入,而不适用于目录 python 模块。

很明显,如果客户在程序中更改了 GPG key ,或者自己在检查算法中删除了一些行,则一切都消失了 - 但这不是问题所在。他可以做任何他想做的事——但这太愚蠢了。他要的是诚信。我想让他通过将第三方插件复制到“插件”目录来添加第三方插件,并让程序检查插件的“可信度”——然后导入它。(因此他可以运行签名的插件,但风险自负。)

最佳答案

Python 的 import mechanism已经提供了实现您想要的目标所需的所有工具。您可以安装不同类型的 import hooks为了支持你想要的东西。

特别是您可能会发现安装 meta path hook 很方便搜索“签名模块”并返回 Loader能够从这种签名格式执行导入。

一个非常简单方便的签名插件格式是一个 zip 存档,其中包含:

  1. 模块/包形式的插件代码
  2. 上述代码的PGP签名

这样:

  • 您的装载程序应该解压缩 zip,并检查签名。如果匹配,那么您可以安全地加载插件,如果不匹配,您应该要求用户信任该插件(或者不信任并中止)
  • 如果用户想要修改插件,只需解压 zip 压缩文件并根据需要进行修改即可。
  • zip 文件中导入已经在 zipimport 中实现模块。这意味着您不必从头开始重写加载程序。

实际上,如果您想将钩子(Hook)的代码减少到最少,您只需验证签名,然后将 zip 存档的路径添加到 sys.path,因为即使没有显式使用 zipimport,python 也已经处理了从 zip 存档的导入。

使用这种设计,您只需安装这些钩子(Hook),然后您就可以导入插件,就好像它们是普通模块一样,验证等将自动完成。

关于python - PGP/GPG 签名 Python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21122426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com