消除 GnuPG 加密中的特殊字符

Eliminate Special Characters in GnuPG Encryption

在使用GnuPG加密时,有没有办法消除特殊字符。我遇到了以下问题。 当我用 GPG 加密一些文本时,它包括像 + 这样的特殊字符。

加密命令

--encrypt --armor --recipient

因此,当此加密文本通过查询字符串传递并尝试解密时。我收到以下错误。

错误

gpg: no valid OpenPGP data found.gpg: decrypt_message failed: Unknown system error 

那么,有没有办法配置GPG不包含一些特殊字符?

不,没有。 OpenPGP 指定了两种编码,您使用的 ASCII armoring 和二进制格式。

ASCII armoring 最初是为邮件传输而开发的,它只允许基本的 7 位 ASCII 字符而无需进一步编码。

URL 编码需要额外的限制或编码。如果您不能更改数据(使用 GnuPG/OpenPGP 则不能),则必须添加您选择的传输协议强制执行的另一种编码。

幸运的是,C# 内置了这样的 URL encoding and decoding methods。如果传输大小很关键,我建议您也尝试 URL 对二进制数据进行编码,这可能会节省很大一部分数据。如果您很少传输小的加密消息,我会继续使用 URL 对 ASCII 装甲消息进行编码,因为处理 ASCII 装甲字符串数据通常比交换二进制信息更可靠。