我正在尝试使用以下命令对 Python 文件进行签名:
gpg --sign --output ./ulagen.py.sig ./ulagen.py
当我使用验证签名时gpg --verify ./ulagen.py.sig
,出现以下错误:
gpg: WARNING: not a detached signature; file 'ulagen.py' was NOT verified!
我究竟做错了什么?
答案1
如果您想要一个独立的签名,您需要使用:
gpg --detach-sig --sign --output ./ulagen.py.sig ./ulagen.py
但是什么是分离签名?默认情况下,GPG 会创建一个签署副本文件的。因此,如果你使用
gpg --sign --output ./ulagen.py.sig ./ulagen.py
该文件ulagen.py.sig
将包含压缩副本和ulagen.py
它的签名。
您可以使用命令
gpg --output ./ulagen-restored.py --decrypt ./ulagen.py.sig
这将提取其中包含的文件ulagen.py.sig
并将其保存为ulagen-restored.py
只需使用以下方法验证文件
gpg --verify ./ulagen.py.sig
将验证签名是否与文件匹配包含在 ulagen.py.sig
。它与文件没有任何关系ulagen.py
,这就是 GPG 告诉您的。
分离的签名只是签名无副本该文件。要验证它,您需要单独使用此文件。
答案2
我实际上喜欢通过纯 ASCII 输出创建分离签名。使用选项即可实现--armor
。否则,默认 GPG 将生成二进制输出(sig 文件)。
要创建这样一个整洁的独立签名(asc):
gpg --detach-sig --armor <file>