删除 "BEGIN" 和 "END PGP MESSAGE" 字符串会使解密中断
Removing "BEGIN" and "END PGP MESSAGE" strings makes decryption break
我正在使用以下命令使用 GnuPG 加密纯文本:
gpg2.exe --encrypt --armor --recipient <<recipient>>
这个returns输出为
-----BEGIN PGP MESSAGE-----Version: GnuPG v2hQEMAzFXJ94q1Nm8AQf/Tld0/3dAvgFKPQVBS8bmbXChXeApeReo1ydNS+OXeIYwZOwld8ykP3G5EzfxNin2CRpcdgGu7mUFQfd5H80TVjVsCGrlT+0fhOsUrh3P3mTxl9CExVtz0R2e8Ot5aibAMXA5EsAZSJJF0IULCCWSeD49FhwTYWkOZVKrTJ6SKyRU65MLT2sEKb4Bh7EddiK2hmJ4vQx1uJYbeR+rdbyEBKPRHXy1WfJO24KBqSL3e7X1eFNfBiwUU7T1pabLtuCffdNDdBA1EOAPfUgFJi0NPaL0j5eJq2Lqpmoe62EPROIfvEr5b533d4FSHRCiH3Y8Hvea/TXaYYj5i9Ccj3K5VtJlAepwPKN16nT2BLwMPwgMPRdSMfd07g0IxPOq2WarAbgapJkJHyDetE7qWThgmMqxaiCi9mdtdkmAICZnVkDuA+f85kHpESS/WIf0o6v5l69JsHUkgfVJpsJ1FccY6gatfnML38c==DbOJ-----END PGP MESSAGE-----
现在当我解密同一个字符串时,它正在解密,但是当我从这个字符串中删除 -----BEGIN PGP MESSAGE-----Version: GnuPG v2
和 -----END PGP MESSAGE-----
时,返回以下错误消息:
gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: Unknown system error
有什么想法吗?
-----BEGIN PGP MESSAGE-----
和 -----END PGP MESSAGE-----
字符串是 RFC 4880, OpenPGP, 6.2. Forming ASCII Armor 定义的 OpenPGP ASCII-armored 消息格式严格要求的。你不应该删除它们,像 GnuPG 这样的 OpenPGP 实现将不再将它们识别为 ASCII-armored OpenPGP 消息(这就是为什么 GnuPG 打印 gpg: no valid OpenPGP data found.
)。
版本 header 行 Version: GnuPG v2
是可选的,可以删除。甚至可以配置 GnuPG,使其不首先添加它。
您可能将二进制 OpenPGP 消息格式与某种没有这些字符串的 ASCII-armored 消息格式混淆了。二进制消息格式包含纯 OpenPGP 消息。由于二进制数据在早期存在问题,尤其是在 e-mail 中,因此定义了 ASCII-armored 编码。您可以将其与 Base64 编码(因此仅保留基本 ASCII 字符)进行比较,添加您观察到的字符串,以便人类更容易识别 OpenPGP 消息。
我正在使用以下命令使用 GnuPG 加密纯文本:
gpg2.exe --encrypt --armor --recipient <<recipient>>
这个returns输出为
-----BEGIN PGP MESSAGE-----Version: GnuPG v2hQEMAzFXJ94q1Nm8AQf/Tld0/3dAvgFKPQVBS8bmbXChXeApeReo1ydNS+OXeIYwZOwld8ykP3G5EzfxNin2CRpcdgGu7mUFQfd5H80TVjVsCGrlT+0fhOsUrh3P3mTxl9CExVtz0R2e8Ot5aibAMXA5EsAZSJJF0IULCCWSeD49FhwTYWkOZVKrTJ6SKyRU65MLT2sEKb4Bh7EddiK2hmJ4vQx1uJYbeR+rdbyEBKPRHXy1WfJO24KBqSL3e7X1eFNfBiwUU7T1pabLtuCffdNDdBA1EOAPfUgFJi0NPaL0j5eJq2Lqpmoe62EPROIfvEr5b533d4FSHRCiH3Y8Hvea/TXaYYj5i9Ccj3K5VtJlAepwPKN16nT2BLwMPwgMPRdSMfd07g0IxPOq2WarAbgapJkJHyDetE7qWThgmMqxaiCi9mdtdkmAICZnVkDuA+f85kHpESS/WIf0o6v5l69JsHUkgfVJpsJ1FccY6gatfnML38c==DbOJ-----END PGP MESSAGE-----
现在当我解密同一个字符串时,它正在解密,但是当我从这个字符串中删除 -----BEGIN PGP MESSAGE-----Version: GnuPG v2
和 -----END PGP MESSAGE-----
时,返回以下错误消息:
gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: Unknown system error
有什么想法吗?
-----BEGIN PGP MESSAGE-----
和 -----END PGP MESSAGE-----
字符串是 RFC 4880, OpenPGP, 6.2. Forming ASCII Armor 定义的 OpenPGP ASCII-armored 消息格式严格要求的。你不应该删除它们,像 GnuPG 这样的 OpenPGP 实现将不再将它们识别为 ASCII-armored OpenPGP 消息(这就是为什么 GnuPG 打印 gpg: no valid OpenPGP data found.
)。
版本 header 行 Version: GnuPG v2
是可选的,可以删除。甚至可以配置 GnuPG,使其不首先添加它。
您可能将二进制 OpenPGP 消息格式与某种没有这些字符串的 ASCII-armored 消息格式混淆了。二进制消息格式包含纯 OpenPGP 消息。由于二进制数据在早期存在问题,尤其是在 e-mail 中,因此定义了 ASCII-armored 编码。您可以将其与 Base64 编码(因此仅保留基本 ASCII 字符)进行比较,添加您观察到的字符串,以便人类更容易识别 OpenPGP 消息。