我正在用 Python 编写一个宠物项目,它涉及用户 A 和 B 通过网络进行交互,试图确保每个用户都拥有来自用户 C 的同一文件的本地副本。
这个想法是 C 给每个人一个经过数字签名的文件。A & B 交换他们拥有的数字签名,并在他们自己的副本上进行检查。如果签名失败,则其中之一的文件版本不正确/损坏/修改。
因此,问题是,C 能否分发一个包含它自己签名的文件?还是C需要单独提供文件和签名?
我正在用 Python 编写一个宠物项目,它涉及用户 A 和 B 通过网络进行交互,试图确保每个用户都拥有来自用户 C 的同一文件的本地副本。
这个想法是 C 给每个人一个经过数字签名的文件。A & B 交换他们拥有的数字签名,并在他们自己的副本上进行检查。如果签名失败,则其中之一的文件版本不正确/损坏/修改。
因此,问题是,C 能否分发一个包含它自己签名的文件?还是C需要单独提供文件和签名?
仅来自 C 的数字签名就足以让 A 和 B 确认他们的文件没有损坏,而无需相互通信。如果 A 和 B 没有收到 C 的签名,他们可以各自创建文件的加密散列并比较散列,但这不需要 C 方面的任何数字签名。
如果您希望 C 对文件进行签名,请分别发送签名和文件,或者将它们都包装在某种容器中,例如 zip 文件或自制解决方案(例如,文件中的第一行代表签名,其余的是有效载荷)。
要从字面上回答您的问题,签名本身不必在文件之外,但正在签名的部分不能包括签名本身。
如果您可以控制文件格式,可以。将签名包含在正确内容之前的标题中,并使签名仅覆盖文件的内容部分,而不是整个文件。就像是:
SIGNATURE=72ba51288199b829a4b9ca2ac911e60c
BEGIN_CONTENTS
... real file contents here ...