我经常使用 pgp 加密接收数据。通常,如果我gpg --list-packets
在文件上运行 a,我会将该文件视为“pubkey enc 数据包”,然后是有关我的私钥的项目。此时,我将文件移动到另一个位置进行解密和处理。
最近,我过去收到文件的一个人发送了一个我无法解密的文件。当我对这些文件运行 list-packets 时,我得到:
:compressed packet: algo=1
:literal data packet:
mode t (74),created 1699482604, name="A*****",
raw data: unknown length
我也尝试过--decrypt
,但无法访问原始数据/消息。据我所知,这可能是一个用相当于gpg --store
命令的文件处理的文件。我还没有找到有关如何尝试访问这些文件中的数据的指导。最好使用 GnuPG。我在用:
gpg --version
gpg (GnuPG) 2.0.22
libcrypt 1.5.3
有谁知道我如何处理这种文件类型?解密、确认签名、访问加密数据。
OpenPGP RFC记录压缩(数据)包(并告诉算法 1 是按照RFC 1951 的ZIP 的 Deflate )和文字数据包,包括
t
文本类型。这似乎是经过压缩(更准确地说是缩小)但未加密的文本,这将输出对称加密的数据包。
gpg (GnuPG) 2.4.3
在我使用/进行的测试中,这会创建并压缩具有类似结构的libgcrypt 1.10.2
文本文件,然后将其解压缩并以清晰的形式输出。Atest
Atest.gpg
正如评论中所述,问题
unknown length
(我在其中获取未压缩文件的长度)可能只是因为文件大于某个阈值。如果
gpg --decrypt
更新 GPG 及其使用内容后仍然失败,则表明该文件可能已损坏。我会回顾它是如何获得的以获得原始版本。如果没有更好的可用,我会附加一堆00
字节(充当放气的填充符)并重试。请注意,zlib 也存在一些漏洞,因此从不受信任的来源解压缩文件总是存在一些风险,尤其是使用旧软件时。