For a while, I've been wanting to have some simple tools for encryption and decryption of simple ciphers such as monoalphabets such as Caesar, atbash, ROT13 and so on. I thought I would have to write them myself. Fortunately I came across example 12-18 on this site and it's problem solved.
[sourcecode language="bash"] #!/bin/bash
# Will encrypt famous quotes in a simple monoalphabetic substitution. # The result is similar to the "Crypto Quote" puzzles #+ seen in the Op Ed pages of the Sunday paper.
key=NOPQRSTUVWXYZABCDEFGHIJKLM # The "key" is nothing more than a scrambled alphabet. # Changing the "key" changes the encryption.
echo "If you have not specified a file, type your input, when done, enter ctrl-D" echo ""
# The 'cat "$@"' construction gets input either from stdin or from files. # If using stdin, terminate input with a Control-D. # Otherwise, specify filename as command-line parameter.
cat "$@" | tr "a-z" "A-Z" | tr "A-Z" "$key" # | to uppercase | encrypt # Will work on lowercase, uppercase, or mixed-case quotes. # Passes non-alphabetic characters through unchanged.
# to decrypt # cat "$@" | tr "$key" "A-Z"
exit 0 [/sourcecode]
I use OS X, so I saved this into a file called 'ROT13', and made it executable by going to the terminal and typing
[sourcecode language="bash"] chmod 755 ROT13 [/sourcecode]
In the terminal, I can execute the file by going to the directory containing the file and typing ./ROT13 (I haven't put my scripts directory in the path yet)
I type my input, hit return, then ctrl-D and return.... voila!
Changing 'KEY' will produce a different encryption. For example atbash uses this key: ZYXWVUTSRQPONMLKJIHGFEDCBA
Now, the next step is to write a script to create blocks of N characters (default, 5) - and a command line vigenere. Hmm, that's harder!