消除 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 装甲字符串数据通常比交换二进制信息更可靠。
在使用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 装甲字符串数据通常比交换二进制信息更可靠。