我制作了一个名为 1.txt 的文件。它有三行文本。
我跑了“gpg --clear-sign 1.txt”。这创建了一个名为 1.txt.asc 的文件。当我在记事本中打开文件时,它是可读的。它有三行文本,后跟数字签名。
我跑了“gpg --sign 1.txt”。这创建了一个文件 1.txt.gpg。当我在记事本中打开该文件时,它难以辨认。没有一组看起来像签名的随机字符;它看起来是记事本无法解析为文本的二进制文件。
我对“数字签名”的理解与第一个例子一致。原始文件未修改。添加加密哈希。这会在不加密数据的情况下验证签名者的身份。
第二个选项看起来更像加密。如果无法访问用户的密钥对,我根本无法查看该文件。
我在这里弄错了吗?使用“gpg --sign”,有没有办法在不访问签名者公钥的情况下查看文件?
它只是被压缩了。这与数字签名无关——它是 OpenPGP 文件格式的属性。
大多数 PGP 工具默认使用 DEFLATE(与 Zip 使用的算法相同)压缩“数据包”——也许是为了补偿 --armor 模式引入的 34% 开销。(最初 PGP 是为电子邮件而构建的,过去每一千字节都非常重要。)
gpg -d
即使无法验证消息,也应该转储内容。使用pgpdump
或gpg --list-packets
详细检查 OpenPGP 消息的结构,包括压缩和其他此类参数。