gpg can sign and encrypt a file, outputting a text file with the original file compressed, encrypted and the output armoured. This is useful for sending encrypted files.
To sign and encrypt a file called archive.zip, issue:
gpg --output archive.zip.sig --sign archive.zip
To decrypt and verify, issue:
gpg --output archive.zip --decrypt archive.zip.sig
A detached signature, just creates a text-signature file that can be used to check the validity of the original file.
To use gpg to detach-sign a file, issue:
gpg --output MD5SUM.sig --detach-sig MD5SUM
to verify the signature, issue:
gpg --verify MD5SUM.sig MD5SUM
Clear-signing a document will modify that document to include the message along with the signature for that message.
gpg --clearsign list.txt
Issue on the command-line:
gpg --version
which should state all the available cyphers, for example:
Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
To encrypt a file using symmetric encryption, issue:
gpg --symmetric --cipher-algo CIPHER SOURCE -o DESTINATION
where:
SOURCE is a file to encyrpt in the current path and CIPHER is a cipher.DESTINATION is the destination file.
To decrypt the resulting file DESTINATION, reverse the process:
gpg -o DESTINATION -d SOURCE
In order to get printable output, use the armor option when encrypting a file:
gpg --armor --symmetric --cipher-algo CIPHER SOURCE -o DESTINATION
The default algorithm used by GPG is CAST5 with a blocksize of 64 bits. In order to change the default algorithm, edit ~/.gnupg/gpg.conf and add the line:
cipher-algo CIPHER
where CIPHER can be obtained by previously issuing:
gpg --version
You will notice this problem when GPG issues a warning:
gpg: WARNING: message was not integrity protected
For 64 bit block-size ciphers such as the default CAST5 and 3DES, the --force-mdc option should be used while encrypting. This is the default for other ciphers with larger block sizes. force-mdc can also be added to ~/.gnupg/gpg.conf as a default.
In order to encrypt a message that cannot be checked to see who it is encrypted to, add the --throw-keyid parameter when encrypting:
gpg -v -e -a --throw-keyid -r 887245BA message.txt
where:
-v means verbose output.-e to encrypt.-a to created ASCII armoured output.--throw-keyid means to not pu the recipient's key IDs into the encrypted messages.-r 887245BA means to encrypt to the the recipient 887245BA
and message.txt is a file that contains the message to encrypt.
In the event that:
gpg: signing failed: Inappropriate ioctl for device
appears when attempting an operation with gpg, the most likely cause is that gpg is trying to prompt for the password to unlock the keychain but the terminal is not properly set.
To resolve the issue, run:
export GPG_TTY=$(tty)
Issue:
gpg --list-keys
to obtain the fingerprint of the keys to be exported.
For public keys issue:
gpg --armor --export FINGERPRINT
and for secret keys, issue:
gpg --armor --export-secret-key FINGERPRINT
which will create an ASCII armored export for both public and secret keys.
Alternatively to export both at the same time in order to create a backup, issue:
gpg --armor --export-secret-keys --export-options export-backup FINGERPRINT
In order to export the photo ID for a key with fingerprint FINGERPRINT, the following command:
gpg --list-options show-photos --photo-viewer "cat > ./0x%k.%t" --list-key FINGERPRINT
will set cat as the photo viewer and export the key to the current directory.
One of the most common problems when exporting PGP keys from batch script is that the home directory for PGP is not known. The command line can be changed in order to include the home directory and other switches that will ensure that the PGP command can be run from batch scripts.
For example, the Wizardry and Steamworks PGP key is exported daily via a cron script using the following command:
/usr/bin/gpg --batch --homedir /home/was/.gnupg/ --armor --quiet --export EFA3B2C5B8DEA6BF824C82543DE933083623DDF1
For the contact, copyright, license, warranty and privacy terms for the usage of this website please see the contact, license, privacy, copyright.