File Encryption and Key Storage For this assignment, add a mechanism to encrypt objects when they're created, and to decrypt objects when they're retrieved. To do this, add an option -k passphrase to the objget and objput commands. As mentioned in class, putting a passphrase on the command line is a bad idea; I specify it here to simplify testing. Convert the passphrase to a 128-bit key using MD5. MD5 is available as part of the openssl library; use 'man EVP_MD_CTX_init' to get the details. You'll also need to use '-lssl' when linking your program. (There are also reasons why this isn't a great way to create a key from a passphrase, but they're beyond the scope of this class.) To encrypt, see the man page for EVP_EncryptInit. Use 128-bit AES in CBC mode. The man page doesn't mention AES specifically; nevertheless, EVP_aes_128_cbc is present in the library, and is called in the same way as the documented ones. Remember that AES in CBC mode requires an IV and can only encrypt multiples of 16 bytes. Your code must cope with this. You will likely spend more time understanding how to use the MD5 and AES routines than writing the actual code. Plan for that...