       true
   """
   def encrypt(plaintext, key_tag \\ @tag) do
-    key   = get_key(key_tag)
-    iv    = :crypto.strong_rand_bytes(16)
-    state = :crypto.stream_init(:aes_ctr, key.key, iv)
+    key_config = get_key_config(key_tag)
+    iv         = :crypto.strong_rand_bytes(16)
+    state      = :crypto.stream_init(:aes_ctr, get_key_value(key_config), iv)
 
     {_state, ciphertext} = :crypto.stream_encrypt(state, to_string(plaintext))
-    key.tag <> iv <> ciphertext
+    key_config.tag <> iv <> ciphertext
   end
 
   @doc """

        keys: [
          %{tag: <<1>>, key: :base64.decode("..."), default: true},
          %{tag: <<2>>, key: :base64.decode("..."), default: false}
        ]

  ### Key Configuration Options

      "Hello"
  """
  def decrypt(<<key_tag::binary-1, iv::binary-16, ciphertext::binary>> = _ciphertext) do
    key_config = get_key_config(key_tag)
    state      = :crypto.stream_init(:aes_ctr, get_key_value(key_config), iv)

    {_state, plaintext} = :crypto.stream_decrypt(state, ciphertext)
    plaintext
