(1) Encryption
First, define which ciphers and in which order you want to use. For more information about ciphers avaliable, type:
gpg --versionand jump to the section "ciphers" or "symmetric":
Symetryczne: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
Enter them in the config section of our "encrypt-multiple.sh" script:
#!/bin/bash algos="TWOFISH AES256 CAMELLIA256 BLOWFISH CAST5" # list of ciphers to use # -----------------------------------------------------# # clearing variables pass="" pass2="" # entering passwords echo -n "Password: " read -s pass echo echo -n "Re-enter password: " read -s pass2 echo # does passwords match? if [ "$pass" == "$pass2" ]; then echo "Passwords mach. Encrypting." echo input=`cat "$1"` for algo in $algos do ((i++)) echo "*** ($i) $algo" input=`echo "$input" | gpg --no-tty --batch -a --symmetric --cipher-algo "$algo" --passphrase "$pass" -o-` done echo "$input" > "$1".asc.$i echo "Encrypted message saved to $1.asc.$i" # clearing passwords and inputs input="" pass="" pass2="" else echo "Passwords doesn't match" fi
So now if you want to encrypt message in file.txt, just run:
encrypt-multiple.sh file.txt
After entering passphases (twice) you will get the encrypted file "file.txt.n" where n is a number of used ciphers (n will be necesary while during decryption).
(2) Decryption
For decrypting above message we just need to enter valid password. We don't need the names and order of used ciphers as gpg detects it automagically. The n - number of passes (used ciphers) is "encoded" in file extension.
#!/bin/bash pass="" # entering passwords echo -n "Password: " read -s pass echo input=`cat "$1"` # list of Ciphers are not necesary as gpg detects it; read from file extension algos="${1##*.}" echo "Encrypted $algos times. Decrypting..." for i in `seq 1 $algos` do echo "*** $i" input=`echo "$input" | gpg --no-tty --batch -d --passphrase "$pass" -o-` done echo "Decrypted message:" echo "---------------------------------------" echo "$input" # clearing passwords and inputs input="" pass="" pass2=""
(3) Output file sizes.
Output file sizes inceases as more ciphers are used. Here is an example of file sizes (uncompressed and compressed with bzip2). Cipher used are:
TWOFISH AES256 CAMELLIA256 BLOWFISH CAST5 TWOFISH AES256 CAMELLIA256 BLOWFISH CAST5.
More reading about ciphers and symmetric encryption: GPG Encryption Guide - Part 4 (Symmetric Encryption).
(4) Bonus
If you want to try decoding, here is 5-fold encrypted text (n=5). The password is chemoinformatics.
Brak komentarzy:
Prześlij komentarz