C# 删除“开始”和“结束PGP消息”字符串会导致解密中断

C# 删除“开始”和“结束PGP消息”字符串会导致解密中断,c#,gnupg,openpgp,C#,Gnupg,Openpgp,我正在使用以下命令使用GnuPG加密纯文本: gpg2.exe --encrypt --armor --recipient <<recipient>> 现在,当我解密同一个字符串时,它正在解密,但当我从该字符串中删除--BEGIN PGP MESSAGE---Version:GnuPG v2和--END PGP MESSAGE---时,返回以下错误消息: gpg: no valid OpenPGP data found. gpg: decrypt_message fai

我正在使用以下命令使用GnuPG加密纯文本:

gpg2.exe --encrypt --armor --recipient <<recipient>>
现在,当我解密同一个字符串时,它正在解密,但当我从该字符串中删除--BEGIN PGP MESSAGE---Version:GnuPG v2和--END PGP MESSAGE---时,返回以下错误消息:

gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: Unknown system error
有什么想法吗?

根据定义,OpenPGP ASCII铠装消息格式严格要求使用--BEGIN PGP消息---和--END PGP消息---字符串。您不应该删除它们,像GnuPG这样的OpenPGP实现将不再将它们标识为ASCII铠装的OpenPGP消息,这就是GnuPG打印gpg的原因:找不到有效的OpenPGP数据

版本标题行version:gnupgv2是可选的,可以删除。甚至可以配置GnuPG,这样它就不会首先添加它

您可能已经将二进制OpenPGP消息格式与没有这些字符串的某种ASCII铠装消息格式混淆了。二进制消息格式保存普通OpenPGP消息。由于二进制数据有问题,特别是在早期的电子邮件中,因此定义了ASCII铠装编码。您可以将其与Base64编码进行比较,以便只保留基本的ASCII字符,并添加您观察到的字符串,以便OpenPGP消息更容易被人类识别。

根据定义,OpenPGP ASCII铠装消息格式严格要求使用--BEGIN PGP消息---和--END PGP消息---字符串。您不应该删除它们,像GnuPG这样的OpenPGP实现将不再将它们标识为ASCII铠装的OpenPGP消息,这就是GnuPG打印gpg的原因:找不到有效的OpenPGP数据

版本标题行version:gnupgv2是可选的,可以删除。甚至可以配置GnuPG,这样它就不会首先添加它


您可能已经将二进制OpenPGP消息格式与没有这些字符串的某种ASCII铠装消息格式混淆了。二进制消息格式保存普通OpenPGP消息。由于二进制数据有问题,特别是在早期的电子邮件中,因此定义了ASCII铠装编码。您可以将其与Base64编码进行比较,以便只保留基本的ASCII字符,并添加您观察到的字符串,以便OpenPGP消息更容易被人类识别。

您是否在发布时删除或以某种方式删除了新闻行?即使是第一条消息示例也不是有效的OpenPGP消息,因为缺少换行符。您是否在发布时删除或以某种方式删除了换行符?即使是第一条消息示例也不是有效的OpenPGP消息,因为缺少换行符。
gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: Unknown system error