 
   """
   @spec decode64!(binary) :: binary
+  def decode64!(string) when is_binary(string) and rem(byte_size(string), 4) == 0 do
+    do_decode64(string)
+  end
+
   def decode64!(string) when is_binary(string) do
-    do_decode64(string, &dec64/1)
+    raise ArgumentError, "incorrect padding"
   end
 
   @doc """

  """
  @spec url_decode64(binary) :: {:ok, binary} | :error
  def url_decode64(string) when is_binary(string) do
    {:ok, do_decode64(string, &dec64url/1)}
  rescue
    ArgumentError -> :error
  end

  """
  @spec decode64(binary) :: {:ok, binary} | :error
  def decode64(string) when is_binary(string) do
    {:ok, decode64!(string)}
  rescue
    ArgumentError -> :error
  end
