PGP Key Guide
Generate Key Pair
# Interactive key generation
gpg --full-generate-key
# Non-interactive (batch mode)
gpg --batch --gen-key <<EOF
%no-protection
Key-Type: RSA
Key-Length: 4096
Subkey-Type: RSA
Subkey-Length: 4096
Name-Real: Your Name
Name-Email: you@example.com
Expire-Date: 2y
EOF
Key Management
# List public keys
gpg --list-keys
# Export public key
gpg --export --armor you@example.com > public.asc
# Export private key (keep safe!)
gpg --export-secret-keys --armor you@example.com > private.asc
# Import key
gpg --import public.asc
Encrypt & Decrypt
# Encrypt a file
gpg --encrypt --armor --recipient recipient@example.com file.txt
# Decrypt
gpg --decrypt file.txt.asc > file.txt
# Encrypt + sign
gpg --encrypt --sign --armor -r recipient@example.com file.txt
Sign & Verify
# Detached signature
gpg --detach-sign --armor file.txt
# Verify signature
gpg --verify file.txt.asc file.txt
# Clearsign (sign text inline)
gpg --clearsign message.txt
Keyserver Operations
# Upload to keyserver
gpg --keyserver keys.openpgp.org --send-keys KEYID
# Search keyserver
gpg --keyserver keys.openpgp.org --search-keys user@example.com
# Receive/refresh key
gpg --keyserver keys.openpgp.org --recv-keys KEYID
| Concept | Description |
|---|---|
| Public Key | Share freely — others use it to encrypt messages to you |
| Private Key | Keep secret — used to decrypt and sign |
| Fingerprint | 40-hex unique identifier for a key |
| Trust Web | PGP's decentralized trust model |