def decrypt(encrypted_text, password = nil, salt = nil)
      password = password.nil? ? Garcon.crypto.password : password
      salt     = salt.nil?     ? Garcon.crypto.salt     : salt

      iv_ciphertext = Base64.decode64(encrypted_text)
      cipher        = new_cipher(:decrypt, password, salt)
      cipher.iv, ciphertext = separate_iv_ciphertext(cipher, iv_ciphertext)
      plain_text    = cipher.update(ciphertext)
      plain_text   << cipher.final
      plain_text
    end
def decrypt(encrypted_text, password = nil, salt = nil)
      password = password.nil? ? Garcon.crypto.password : password
      salt     = salt.nil?     ? Garcon.crypto.salt     : salt

      iv_ciphertext = Base64.decode64(encrypted_text)
      cipher        = new_cipher(:decrypt, password, salt)
      cipher.iv, ciphertext = separate_iv_ciphertext(cipher, iv_ciphertext)
      plain_text    = cipher.update(ciphertext)
      plain_text   << cipher.final
      plain_text
    end
Decrypt the given string, using the salt and password supplied.

 @param [String] encrypted_text
   The text to decrypt, probably produced with #decrypt.

 @param [String] password
   Secret passphrase to decrypt with.

 @param [String] salt
   The cryptographically secure pseudo-random string used to spice up the
   encryption of your strings.

 @return [String]
   The decrypted plain_text.

 @api public