GnuPG 的 clearsign 选项如何工作?

How does clearsign option of GnuPG works?

可以使用 PGP 签名文件,使用 clearsign 选项,在 CMD

中执行以下命令
gpg --clearsign filename

GnuPG 对 clearsign 选项使用了什么样的算法,使得即使在执行签名后,输出签名也是可读的?

我读了一本说明 clearsign 选项如何工作的手册,但我无法理解。 It is available here.

根据手册,装甲应用于签名,使签名不可读。但问题是 clearsign 如何使签名可读。

但是,如何控制由哈希算法和加密函数组成的签名输出为明文?

通过使用散列和加密函数,如何保证输出在可读的ASCII字符范围内?

签名总是二进制的,真的。 clearsign 仅表示签名不是针对压缩消息计算的,而是针对原始消息计算的(如果它是文本格式的话)。这意味着签名后的邮件对于收件人来说仍然是可读的(在 ----BEGIN PGP SIGNED MESSAGE---- header 之后),这意味着在邮件中收件人仍然可以阅读邮件而无需通过 PGP 程序。收件人仍然需要这样的程序来验证签名。

由于签名总是二进制的,但有时需要以文本格式发送,这意味着签名被编码为 base64,以确保它也是文本格式。如果你不做clearsign,而是sign,整个消息先被压缩,然后被签名,总的是base64编码。该消息仍然可以被任何人读取(在 base64 解码和解压缩之后)。所以标准的 ASCII 装甲编码用于保证可打印的 ASCII 输出。但是这个最终的编码只是为了方便,底层的二进制形式是被验证的实际签名。