Implementación moderna de OpenPGP en Java basada en el kit de herramientas criptográficas BouncyCastle, que facilita el manejo de datos OpenPGP. Las características principales de BouncyCastle son cifrado simétrico [AES (CBC, GCM, CTR), ChaCha20, Camellia, ARIA, SM4, DES/3DES], funciones hash [SHA-2, SHA-3, BLAKE2/3, SHAKE128/SHAKE256, Whirlpool, RIPEMD], cifrado asimétrico [RSA, ECDSA, EdDSA (Ed25519), ElGamal, Diffie-Hellman], criptografía post-cuántica [ML-KEM (Kyber), ML-DSA (Dilithium), HQC (desde versión 1.79)] y protocolos [OpenPGP, CMS, S/MIME, TLS 1.3, X.509, OCSP, CRL, TSP].
$ pgpainless-cli generate-key "Alice <alice@pgpainless.org>" > key.asc
$ cat key.asc | pgpainless-cli extract-cert > cert.asc
$ $ echo "Linux es un sistema genial" | pgpainless-cli encrypt cert.asc --sign-with key.asc > msg.asc
cert.asc --> El certificado del destinatario para cifrado.
--sign-with key.asc --> La clave secreta para firmar el mensaje.
$ cat msg.asc | pgpainless-cli decrypt key.asc --verify-with cert.asc --verifications-out verifications.txt
key.asc --> La clave secreta del destinatario para descifrado.
--verify-with cert.asc --> El certificado del remitente para verificación.
--verifications-out --> Guarda información de verificación en un archivo.
$ $ pgpainless-cli verify document.txt.sig --with document.txt --cert sender.asc
$ $ cat binary-data | pgpainless-cli armor > armored.txt