Devontrae introduced me to an interesting person a few nights ago: Tyler Diaz. I had no idea who he was or what he was capable of but we easily connected through the most obscure lingo known to hackers: cryptography.

He began the conversation by asking, "Are you a hacker?" Questions like these usually signal some exclusivity. Fortunately for me, I was in that exclusive loop. He followed up by showing me a UNIX command.

echo SGVsbG8sIEdpbwo= | openssl base64 -d


This obviously isn't 1337 speak. From reading the command, we can see that the arbitrary text is being routed to standard input of the openssl base64 -d command as denoted by the piping |. base64 is the keyword that gave me the idea that this message is encoded and I'm supposed to decode it.

## Do as the Hackers Do

Decrypt it. Unfortunately, I wasn't using a Linux at the time and we were chatting through MSN messenger on Windows XP; thus, I googled for a base64 decryption website and decrypted the message:

Hello, Gio


At that moment, we connected.

It's strange that many hackers and programmers that I know like to communicate with me through cryptography. Cryptography is an interest that seems common with all hackers and programmers. A cryptographic friend of mine even runs his passwords through a message digest to ensure that they're all the same length.

I never took an interest in cryptography until now. After our interesting discussions, I wanted to learn more about the OpenSSL project and it's encryption libraries.

## OpenSSL in Ubuntu

If you don't already have OpenSSL installed, you simply install it on Ubuntu like any other package.

$sudo apt-get install openssl  Fortunately, I already had OpenSSL installed on my Ubuntu 11.04 for my laptop. I didn't want to use OpenSSL for its SSL and TLS network protocols but for its encryption libraries as Tyler did; so, I looked up openssl's CLI documentation. ## Encrypting and Decrypting with OpenSSL The OpenSSL command that Tyler showed me was a shortcut to the enc pseudo-command that used common ciphers including base64 to encrypt and decrypt messages. This is exactly what I wanted to do but first I needed to know which ciphers exist. Fortunately, a pseudo-command exists to list all available ciphers. $ openssl list-cipher-commands
aes-128-cbc
aes-128-ecb
aes-192-cbc
aes-192-ecb
aes-256-cbc
aes-256-ecb
base64
# more ciphers


These ciphers made it easy for me to encrypt and decrypt messages quickly so that I can start esoteric communication with friends (but not all the time). The command is a very simple pattern that Tyler demonstrated above.

\$ echo [message] | openssl [cipher] [-d|-e]


• cipher is the cryptographic algorithm used such as base64 or aes-256-cbc.