I messaggi PGP sono in un formato binario non elaborato che comprende più pacchetti, come specificato in RFC 4880 . Non c'è nulla di eccitante nella sintassi. Ad esempio, ogni pacchetto in un messaggio è costituito da un'intestazione e un corpo con il primo byte dell'intestazione come tag intestazione , ecc. È possibile sezionare un messaggio PGP proprio come faresti con un pacchetto TCP .
Ciò che hai identificato come "un grosso blocco di base64" è chiamato armatura ASCII . Come il nome suggerisce e @SteffenUllrich ha sottolineato, protegge il messaggio dal danneggiamento durante il trasferimento, rappresentandolo con caratteri ASCII stampabili. Tutto ciò che fa è base64 - avvolgere il formato OpenPGP.
Se si desidera analizzare un messaggio corazzato ASCII, si dovrebbe prima decodificare in base64 e poi analizzare il flusso binario contenuto in base alle specifiche della sintassi.
Dalla sezione 2.4 della RFC:
2.4. Conversion to Radix-64
OpenPGP's underlying native representation for encrypted messages,
signature certificates, and keys is a stream of arbitrary octets.
Some systems only permit the use of blocks consisting of seven-bit,
printable text. For transporting OpenPGP's native raw binary octets
through channels that are not safe to raw binary data, a printable
encoding of these binary octets is needed. OpenPGP provides the
service of converting the raw 8-bit binary octet stream to a stream
of printable ASCII characters, called Radix-64 encoding or ASCII
Armor.